J'essaie d'insérer des données dans 2 tables à la fois mais le problème que j'ai avec mon code est ... Je ne peux insérer qu'une table à la fois. Si je commente la première instruction d'insertion alors la 2ème insertion fonctionnera et vice-versa.Insérer des données dans plusieurs tables en utilisant C#
Voici mon code
SqlCommand cmd = new SqlCommand("select Name from MainTable where Name= '" + Name+ "' ", sqlcon);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
lblmsg.Text = "We are already have this Name" + Name;
}
else
{
dr.Close();
sqlcmd.CommandText = "INSERT INTO Table1(Name, Address) VALUES(@Name, @Address)";
sqlcmd.CommandText = "INSERT INTO Table2(Company, Address2) VALUES(@Company, @Address2)";
sqlcmd.Parameters.Clear();
sqlcmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = Name;
sqlcmd.Parameters.Add("@Address", SqlDbType.VarChar).Value = Address;
sqlcmd.Parameters.Add("@Company", SqlDbType.VarChar).Value = Company
sqlcmd.Parameters.Add("@Address2", SqlDbType.VarChar).Value = Address2;
sqlcmd.Connection = sqlcon;
sqlcmd.ExecuteNonQuery();
DV_NameAdd.ChangeMode(DetailsViewMode.ReadOnly);
sqlcon.Close();
}
sqlcon.Close();
Comme Steve l'a souligné, l'instruction SELECT au début de votre exemple de code est potentiellement dangereux. Si la valeur de Name peut être définie via une entrée utilisateur, vous avez une vulnérabilité d'injection SQL. S'il te plaît, regarde ça. Vous pouvez éviter ce danger en paramétrant la requête plutôt qu'en utilisant la concaténation de chaîne. – Odrade