Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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# 将数据插入sql server失败,没有任何原因_C#_Sql Server - Fatal编程技术网

C# 将数据插入sql server失败,没有任何原因

C# 将数据插入sql server失败,没有任何原因,c#,sql-server,C#,Sql Server,我非常习惯于将c#与SQL server结合使用。我不知道为什么一个简单的语句不能插入数据。我的代码如下: query = "INSERT INTO MCDPhoneNumber ([MCDID],[PhoneNumber])" + "VALUES("+maxid+", '"+tel+"')"; SqlConnection conn = new SqlConnection("Data Source=source; ..."); SqlCommand

我非常习惯于将c#与SQL server结合使用。我不知道为什么一个简单的语句不能插入数据。我的代码如下:

 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);
 }

首先让我告诉大家,我知道我应该使用参数来表示数据,我一开始是这样做的,但当它失败时,我尝试了一个简单的查询,但仍然失败。此外,我可以看出,在另一个表中的插入之前,我有一个类似的插入,它可以工作。更有趣的是,当我将粘贴查询复制到SQLServerManagementStudio时,它可以工作。它也不会报告过程中的任何错误

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

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

然后执行它

您正在使用newCommand绑定查询,并执行myCommand


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

SqlCommand newCommand = new SqlCommand(query, conn);
这里为SQLCOMMAND对象定义了newCommand

 int success= myCommand.ExecuteNonQuery();
您正在以myCommand的身份访问它


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

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

您应该始终在sql查询中使用。这种类型的字符串连接对攻击是开放的


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

您是否应该打开连接?出于对所有神圣内容的热爱,请使用参数,而不是串联字符串。您可以发布真正的代码吗?我没有看到对连接的Open()调用,也没有看到对连接和command.debug使用块的年度消息。描述的不仅仅是错误。是的,我使用了旧命令而不是新命令!!顺便说一句,我拒绝了连接,因为否则它会崩溃。
 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);
    }
 }