将数据插入sql server无故失败

时间:2013-09-25 13:54:14

标签: c# sql-server

我很习惯在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时,它可以工作。它也不会报告任何错误。

2 个答案:

答案 0 :(得分:2)

======================编辑======================== =======

如果您希望使用旧命令对象(即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();

您正在以 myCommand

的形式访问它

而且我认为你没有打开连接

答案 1 :(得分:2)

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

您应该始终使用parameterized queries进行SQL查询。这种字符串连接对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);
    }
 }

请更加礼貌地了解您的错误消息:)