首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlCommand插入查询

SqlCommand插入查询
EN

Stack Overflow用户
提问于 2013-05-03 09:48:43
回答 3查看 139关注 0票数 0

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

代码语言:javascript
复制
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()); }

                    }
                }

            }

插入不起作用我也不知道为什么。选择和删除查询运行良好。只有当我尝试插入值时,才会出现语法错误。

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

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-03 09:54:51

您传递的一些值可能是string/varchar对象,而不是用引号包装它们:

代码语言:javascript
复制
new SqlCommand("INSERT INTO REL_Fab3DLotFichier_Fichier3D (IDREL_Fab3DLotFichier_Fichier3D,IDFichier3D) VALUES ('" + a + "', '" + idfichier + "')", connexion);

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

票数 1
EN

Stack Overflow用户

发布于 2013-05-03 09:50:51

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

是。使用参数化SQL语句。

代码语言:javascript
复制
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。

代码语言:javascript
复制
sql=@"INSERT INTO REL_Fab3DLotFichier_Fichier3D 
                (IDREL_Fab3DLotFichier_Fichier3D,
                 IDFichier3D,
                 IDFab3DLotFichier,
                 DateMaj,EstActif) 
     VALUES 
                (@IDREL_Fab3DLotFichier_Fichier3D,
                 @IDFichier3D,
                 @IDFab3DLotFichier,
                 @DateMaj,@EstActif)";
票数 3
EN

Stack Overflow用户

发布于 2013-05-03 11:03:29

请将字符串值括在单引号中,如下所示

代码语言:javascript
复制
 New SqlCommand("insert into Type(TypeName,TypeOrder,CategoryID) values ('" + txtType1.Text + "','" + txtOrder.Text + "','" + ViewState("CatID").ToString() + "')", con)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16356063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档