Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SqlCommand插入查询_C#_Sql_Sql Server_Insert_Sql Insert - Fatal编程技术网

C# SqlCommand插入查询

C# SqlCommand插入查询,c#,sql,sql-server,insert,sql-insert,C#,Sql,Sql Server,Insert,Sql Insert,我必须在我的c代码中执行一个插入查询 connexion=newsqlconnection(connexionString); connexion.Open(); List liste=client.getidfichers(1210); INTA=2; foreach(列表中的int-idficher) { a++; 使用(连接) { 使用(SqlCommand sqlCmd=new SqlCommand(“插入到REL_fab3dlotficher_Fichier3D(IDREL_fab3d

我必须在我的c代码中执行一个插入查询

connexion=newsqlconnection(connexionString);
connexion.Open();
List liste=client.getidfichers(1210);
INTA=2;
foreach(列表中的int-idficher)
{
a++;
使用(连接)
{
使用(SqlCommand sqlCmd=new SqlCommand(“插入到REL_fab3dlotficher_Fichier3D(IDREL_fab3dlotficher_Fichier3D,IDFichier3D,idfab3dlotficher,screer,CreeLe,modifipar,DateMaj,EstActif)值(“+a+”,“+idfichier+”,“+17965+”,“+null+”,“+null+”,“+null+”,“+null+”,“+null+”,“+null+”,“+1+”),连接))
{
尝试
{
sqlCmd.ExecuteNonQuery();
}
catch(Exception ex){MessageBox.Show(ex.ToString());}
}
}
}
插入不起作用,我不知道为什么。选择和删除查询工作正常。只有当我尝试插入值时,才会出现语法错误

  • 语法错误是什么
  • 我怎样才能修好它
语法错误是什么?我怎样才能修好它

对。使用参数化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;
 ...
 }
尝试包含非空字段以准备插入SQL

sql=@"INSERT INTO REL_Fab3DLotFichier_Fichier3D 
                (IDREL_Fab3DLotFichier_Fichier3D,
                 IDFichier3D,
                 IDFab3DLotFichier,
                 DateMaj,EstActif) 
     VALUES 
                (@IDREL_Fab3DLotFichier_Fichier3D,
                 @IDFichier3D,
                 @IDFab3DLotFichier,
                 @DateMaj,@EstActif)";
语法错误是什么?我怎样才能修好它

对。使用参数化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;
 ...
 }
尝试包含非空字段以准备插入SQL

sql=@"INSERT INTO REL_Fab3DLotFichier_Fichier3D 
                (IDREL_Fab3DLotFichier_Fichier3D,
                 IDFichier3D,
                 IDFab3DLotFichier,
                 DateMaj,EstActif) 
     VALUES 
                (@IDREL_Fab3DLotFichier_Fichier3D,
                 @IDFichier3D,
                 @IDFab3DLotFichier,
                 @DateMaj,@EstActif)";

您正在传递的某些值可能是string/varchar对象,并且您没有用引号将它们括起来:

new SqlCommand("INSERT INTO REL_Fab3DLotFichier_Fichier3D (IDREL_Fab3DLotFichier_Fichier3D,IDFichier3D) VALUES ('" + a + "', '" + idfichier + "')", connexion);

实际上,正如AVD所建议的,您应该使用参数化,这不太容易受到注入攻击。

您正在传递的一些值可能是string/varchar对象,并且您没有用引号将它们括起来:

new SqlCommand("INSERT INTO REL_Fab3DLotFichier_Fichier3D (IDREL_Fab3DLotFichier_Fichier3D,IDFichier3D) VALUES ('" + a + "', '" + idfichier + "')", connexion);

实际上,正如AVD所建议的,您应该使用参数化,这不太容易受到注入攻击。

请将字符串值用单引号括起来,如下所示

 New SqlCommand("insert into Type(TypeName,TypeOrder,CategoryID) values ('" + txtType1.Text + "','" + txtOrder.Text + "','" + ViewState("CatID").ToString() + "')", con)

请用单引号将字符串值括起来,如下所示

 New SqlCommand("insert into Type(TypeName,TypeOrder,CategoryID) values ('" + txtType1.Text + "','" + txtOrder.Text + "','" + ViewState("CatID").ToString() + "')", con)

请指定错误…向您显示表格模式如何开始!首先,将int与字符串和null连接起来。其次,考虑参数化查询。总是使用参数化查询。它将防止SQL注入攻击。请指定错误…向您显示表SchemaWho我应该从哪里开始!首先,将int与字符串和null连接起来。其次,考虑参数化查询。总是使用参数化查询。它将防止SQL注入攻击。