0

I have this simple class which should perform a normal INSERT INTO a table, but ExecuteNonQuery give me: OVERFLOW ERROR. Can you tell me why? Please.

  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();



            } 

Table Definition:

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

)
eightShirt
  • 1,457
  • 2
  • 15
  • 29
FrankTan
  • 1,626
  • 6
  • 28
  • 63
  • could you paste the complete error? – Claudio Redi May 31 '12 at 18:02
  • You should cross check the parameters values with the lenght/size/type of your fields. `normalizzatore` contains only strings? and your fields are only of string type? – Steve May 31 '12 at 18:06
  • 1
    Try replacing `cIns.Parameters.AddWithValue("@id", clid);` by `cIns.Parameters.AddWithValue("@id", int.Parse(clid));` – Claudio Redi May 31 '12 at 18:10

1 Answers1

1

I would guess one of the parameters you are passing in is of greater length than the column you are trying to insert into. Can you post your table definition?

Abe Miessler
  • 82,532
  • 99
  • 305
  • 486
  • OleDbCommand myCommand = new OleDbCommand(); myCommand.Connection = con; myCommand.CommandText = "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)"; myCommand.ExecuteNonQuery(); – FrankTan May 31 '12 at 18:04
  • i did set everything to TEXT but still oveflow – FrankTan May 31 '12 at 18:08