2012-05-31 41 views
0

我有這個簡單的類應該執行一個正常的INSERT INTO表,但ExecuteNonQuery給我︰OVERFLOW ERROR。 你能告訴我爲什麼嗎?請。c#OleDbCommand溢出

OleDbCommand cmd = new OleDbCommand(selectSQLNewData, con); 
      OleDbDataReader reader = cmd.ExecuteReader(); 

      OleDbCommand cIns = new OleDbCommand(); 
      string str = "insert into NORMALIZZATI (id,comune,provincia,via_ufficiale,civico,frazione,cap,codiceIstat1,codiceIstat2,codiceIstat3,codiceIstat4,qualita,xdef,ydef) VALUES (@id,@comune,@provincia,@via_ufficiale,@civico,@frazione,@cap,@codiceIstat1,@codiceIstat2,@codiceIstat3,@codiceIstat4,@qualita,@xdef,@ydef);"; 


      while (reader.Read()) 
      { 
       string clid = reader["CUSTOMER_ID"].ToString(); //selezionare la chiave primaria 
       string indirizzo = reader["INDIRIZZO"].ToString(); //selezionare l'input al normalizzatore 
       string postalcode = reader["POSTALCODE"].ToString(); //input al normalizzatore 
       string citta = reader["CITTA"].ToString(); 
       string prov = reader["PROV"].ToString(); 

       ///chiama il processo di normalizzazione su questi dati, ritorna un output ... da inserire nella tabella. 
       ServiceReference.ArrayOfString normalizzatore = norm.Esegui("TANGARIF", "4w3cC+naG8FnaHxH3ab/BA==", 2, citta, indirizzo, prov); 

       ////prendere il risultato della normalizzazione, cosa prendere ?? 
       //se vanno bene: 

       cIns = new OleDbCommand(); 
       cIns.Connection = con; 
       cIns.CommandText = str; 
       cIns.Parameters.AddWithValue("@id", clid); 
       cIns.Parameters.AddWithValue("@comune", normalizzatore[7]); 
       cIns.Parameters.AddWithValue("@provincia", normalizzatore[6]); 
       cIns.Parameters.AddWithValue("@via_ufficiale", normalizzatore[7]); /// da dove prendo la via ufficiale? 
       cIns.Parameters.AddWithValue("@civico", normalizzatore[13]); 
       cIns.Parameters.AddWithValue("@frazione", normalizzatore[8]); 
       cIns.Parameters.AddWithValue("@cap", normalizzatore[27]); 
       cIns.Parameters.AddWithValue("@codiceIstat1", normalizzatore[14]); 
       cIns.Parameters.AddWithValue("@codiceIstat2", normalizzatore[15]); 
       cIns.Parameters.AddWithValue("@codiceIstat3", normalizzatore[16]); 
       cIns.Parameters.AddWithValue("@codiceIstat4", normalizzatore[17]); 
       cIns.Parameters.AddWithValue("@qualita", normalizzatore[43]); 
       cIns.Parameters.AddWithValue("@xdef", (normalizzatore[38])); 
       cIns.Parameters.AddWithValue("@ydef", (normalizzatore[39])); 
       cIns.ExecuteNonQuery(); 



      } 

表定義:

CREATE TABLE NORMALIZZATI 
(

    id integer primary key, 
    comune char(200), 
    provincia char(200), 
    via_ufficiale char(200), 
    civico char(200), 
    frazione char(200), 
    cap char(5), 
    codiceIstat1 char(200), 
    codiceIstat2 char(200), 
    codiceIstat3 char(200), 
    codiceIstat4 char(200), 
    qualita char(200), 
    xdef Text, 
    ydef Text 

) 
+0

你能粘貼完整的錯誤嗎? –

+0

您應該使用字段的長度/大小/類型來檢查參數值。 'normalizzatore'只包含字符串?你的領域只是字符串類型? – Steve

+1

嘗試用'cIns.Parameters.AddWithValue(「@ id」,int.Parse(clid))替換'cIns.Parameters.AddWithValue(「@ id」,clid);' –

回答

1

我猜你傳遞的參數之一是比你試圖插入列長度較大。你能發表你的表格定義嗎?

+0

OleDbCommand myCommand = new OleDbCommand(); myCommand.Connection = con; (200),charincia(200),via_ufficiale char(200),civico char(200),frazione char(200),cap char(5) ,codiceIstat1 char(200),codiceIstat2 char(200),codiceIstat3 char(200),codiceIstat4 char(200),qualita char(200),xdef Text,ydef Text)「; myCommand.ExecuteNonQuery(); –

+0

我確實把一切都設置爲TEXT,但仍然過度 –

+0

好的問題是ID .. –