我必须在我的c#代码中执行插入查询
connexion = new SqlConnection(connexionString);
connexion.Open();
List<int> liste = client.GetIDFichiers(1210);
int a = 2;
foreach (int idfichier in liste)
{
a++;
using (connexion)
{
using (SqlCommand sqlCmd = new SqlCommand("INSERT INTO REL_Fab3DLotFichier_Fichier3D (IDREL_Fab3DLotFichier_Fichier3D,IDFichier3D,IDFab3DLotFichier,CreePar,CreeLe,ModifiePar,DateMaj,EstActif) VALUES (" + a + "," + idfichier + "," + 17965 + "," + null + "," + null + "," + null + "," + null + "," + 1 + ")", connexion))
{
try
{
sqlCmd.ExecuteNonQuery();
}
catch (Exception ex) { MessageBox.Show(ex.ToString()); }
}
}
}
插入不起作用我也不知道为什么。选择和删除查询运行良好。只有当我尝试插入值时,才会出现语法错误。
发布于 2013-05-03 01:54:51
您传递的一些值可能是string/varchar对象,而不是用引号包装它们:
new SqlCommand("INSERT INTO REL_Fab3DLotFichier_Fichier3D (IDREL_Fab3DLotFichier_Fichier3D,IDFichier3D) VALUES ('" + a + "', '" + idfichier + "')", connexion);
实际上,正如AVD所建议的,您应该使用参数化,这不太容易发生注入攻击。
发布于 2013-05-03 01:50:51
语法错误是什么?我怎么才能修好它呢?
是。使用参数化SQL语句。
string sql = "INSERT INTO TableName (Column1,Column2) VALUES (@value1,@value2)";
using(SqlCommand sqlCmd = new SqlCommand(sql,connection))
{
sqlCmd.Parameters.Add("@value1",SqlDbType.Varchar,20).Value = varName1;
sqlCmd.Parameters.Add("@value2",SqlDbType.Varchar,20).Value = DBNull.Value;
...
}
尝试包括null字段以准备INSERT SQL。
sql=@"INSERT INTO REL_Fab3DLotFichier_Fichier3D
(IDREL_Fab3DLotFichier_Fichier3D,
IDFichier3D,
IDFab3DLotFichier,
DateMaj,EstActif)
VALUES
(@IDREL_Fab3DLotFichier_Fichier3D,
@IDFichier3D,
@IDFab3DLotFichier,
@DateMaj,@EstActif)";
发布于 2013-05-03 03:03:29
请将字符串值括在单引号中,如下所示
New SqlCommand("insert into Type(TypeName,TypeOrder,CategoryID) values ('" + txtType1.Text + "','" + txtOrder.Text + "','" + ViewState("CatID").ToString() + "')", con)
https://stackoverflow.com/questions/16356063
复制