将数据插入 sql 服务器失败,无缘无故

本文关键字:失败 无缘无故 服务器 sql 数据 插入 | 更新日期: 2023-09-27 18:32:42

我已经习惯于在SQL服务器上使用c#。我不知道为什么一个简单的语句无法插入数据。我的代码如下:

 query = "INSERT INTO MCDPhoneNumber ([MCDID],[PhoneNumber])" +
                    "VALUES("+maxid+", '"+tel+"')";
 SqlConnection conn = new SqlConnection("Data Source=source; ...");
 SqlCommand newCommand = new SqlCommand(query, conn);
 int success= myCommand.ExecuteNonQuery();
 if (success!= 1)
 {
      MessageBox.Show("It didn't insert anything:" + query);
 }

首先让我告诉我知道我应该对数据使用参数,我最初这样做了,但是当它失败时,我尝试了一个简单的查询,它仍然失败。另外,我可以说我在另一个表中的插入物之前有一个类似的插入,它可以工作。更有趣的是,当我将粘贴查询复制到SQL Server Management Studio时,它可以工作。它也不会报告过程中的任何错误。

将数据插入 sql 服务器失败,无缘无故

=======================

编辑 ==

================================

如果您希望使用旧的命令对象(即myCommand),请使用以下代码而不是创建新命令(newCommand)

 myCommand.CommandText = query;
 myCommand.CommandType = System.Data.CommandType.Text;

然后执行它

您正在将查询与 newCommand 绑定并执行 myCommand

====

================== 编辑 ======================================
SqlCommand newCommand = new SqlCommand(query, conn);

在这里,您已经为 SQLCOMMAND 对象定义了 newCommand

 int success= myCommand.ExecuteNonQuery();

并且您正在以我的命令访问它

此外,我认为您没有打开连接

首先,您将命令定义为newCommand但执行myCommand

始终对 SQL 查询使用parameterized queries。这种字符串连接对SQL Injection攻击是开放的。

 query = "INSERT INTO MCDPhoneNumber (MCDID, PhoneNumber) VALUES(@maxid, @tel)";
 using(SqlConnection conn = new SqlConnection("Data Source=source; Initial Catalog=base; Integrated Security = true"))
 {
    SqlCommand newCommand = new SqlCommand(query, conn);
    conn.Open();
    newCommand.Parameters.AddWithValue("@maxid", maxid);
    newCommand.Parameters.AddWithValue("@tel", tel);
    int success= newCommand.ExecuteNonQuery();
    if (success != 1)
    {
         MessageBox.Show("It didn't insert shit:" + query);
    }
 }

请对您的错误消息更加礼貌:)