Buongiorno a tutti, sto usando Visual C# 2010 e MySQL Versione 5.1.48-community. Spero che tu possa aiutarmi con questo codice. Non trovo che funzioni su di me. Cosa mi manca?C# con parametri INSERT MySQL
string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
MySqlConnection conn = new MySqlConnection(connString);
conn.Open();
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO room(person,address) VALUES(@person, @address)";
comm.Parameters.Add("@person", "Myname");
comm.Parameters.Add("@address", "Myaddress");
comm.ExecuteNonQuery();
conn.Close();
E quando provo a compilarlo. Dice:
colonna persona non può essere nullo
CURA:
Ma quando provo questo codice.
comm.CommandText = "INSERT INTO room(person,address) VALUES('Myname', 'Myaddress')";
Ma questo codice è soggetto ad attacco SQL injection ma funziona, non mi dà un errore.
Modificato:
ho cercato di utilizzare questo. Ho trovato here così ho pensato che avrebbe funzionato, ma mi dà questo errore
Indice (base zero) deve essere maggiore o uguale a zero e minore la dimensione della lista di argomenti.
Qualche idea?
string a = "myname";
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO room(person,address) VALUES(?,?)";
//cmd.Prepare();
cmd.Parameters.Add("person", MySqlDbType.VarChar).Value = a;
cmd.Parameters.Add("address", MySqlDbType.VarChar).Value = "myaddress";
cmd.ExecuteNonQuery(); // HERE I GOT AN EXCEPTION IN THIS LINE
Qualsiasi aiuto sarebbe molto apprezzato.
Modificato: risolto Ho usato questo codice:
cmd.CommandText = "INSERT INTO room(person,address) VALUES(?person,?address)";
cmd.Parameters.Add("?person", MySqlDbType.VarChar).Value = "myname";
cmd.Parameters.Add("?address", MySqlDbType.VarChar).Value = "myaddress";
cmd.ExecuteNonQuery();
Grazie!
potresti pubblicare l'eccezione esatta che stai ricevendo? Normalmente dovresti usare AddWithValue come ogni altro dichiarato. Aggiungi è deprezzato quindi non dovresti usarlo –
Lì. Ho ottenuto un'eccezione in 'cmd.ExecuteNonQuery();' Sì, lo so. Vedete che sto usando Visual C# 2010 e ho provato ad usare AddWithValue ma sembra che il 2010 non lo supporti. Non so se ho ragione. –
Attualmente lavoro con vs2008 e lo uso. Al mio college avevamo vs2010 e stavamo usando AddWithValue –