Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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# Insert语句错误_C#_Sql Server_Tsql - Fatal编程技术网

C# Insert语句错误

C# Insert语句错误,c#,sql-server,tsql,C#,Sql Server,Tsql,我正在azure中调用一个web服务,并使用以下方法填充DB。我不知道怎么了 using (SqlConnection conn = new SqlConnection(cs)) { using (SqlCommand command = conn.CreateCommand()) { conn.Open(); string cmdText = String.Format("INSERT INTO UserFiles VALUES('" + obj.userR

我正在azure中调用一个web服务,并使用以下方法填充DB。我不知道怎么了

using (SqlConnection conn = new SqlConnection(cs))
{
   using (SqlCommand command = conn.CreateCommand())
   {
      conn.Open();
      string cmdText = String.Format("INSERT INTO UserFiles VALUES('" + obj.userRef.ToString() + "','name','name','name','name','name','name'");
      command.CommandText = cmdText;
      command.ExecuteNonQuery();
      conn.Close();
   }
}
这是错误消息:

System.Data.SqlClient.SqlException 0x80131904:语法不正确 靠近“name”

在 System.Data.SqlClient.SqlConnection.OnErrorSqlException异常, 布尔断开连接,Action1 wrapCloseInAction 在 System.Data.SqlClient.SqlInternalConnection.OnErrorSqlException 异常、布尔断开连接、Action1 wrapCloseInAction 位于System.Data.SqlClient.TdsParser.ThroweException和WarningDsParserStateObject stateObj,布尔调用方连接锁,布尔异步关闭 在System.Data.SqlClient.TdsParser.tryrunbenhavior运行行为中, SqlCommand cmdHandler、SqlDataReader数据流、, BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj、Boolean和dataReady 位于System.Data.SqlClient.SqlCommand.RunExecuteOnQueryTDString methodName,布尔异步,Int32超时 位于System.Data.SqlClient.SqlCommand.InternalExecutionQueryTaskCompletionSource`1 完成,字符串方法名,布尔sendToPipe,Int32超时, 布尔异步写入 在System.Data.SqlClient.SqlCommand.ExecuteOnQuery 在_4900ProjectDesktopInterface.Form1.uploadbutton_单击对象发送者,事件参数在 C:\Users\Ken\Documents\GitHub\MegaFileUploadConversionService\TestingTool\4900ProjectDesktopInterface\Form1.cs:line 152\r\n客户端连接ID:fb95122f-415b-484d-9438-903f0bf2aad0

你忘了右括号


您忘记了右括号

看起来您没有终止值的左括号?为什么要使用String.Format?您可以去掉conn.close,因为using语句将隐式地执行此操作

using (SqlConnection conn = new SqlConnection(cs))
{
   using (SqlCommand command = conn.CreateCommand())
   {
      conn.Open();
      string cmdText = "INSERT INTO UserFiles VALUES('" + obj.userRef.ToString() + "','name','name','name','name','name','name')";
      command.CommandText = cmdText;
      command.ExecuteNonQuery();
   }
}

看起来您没有终止值的开括号?为什么要使用String.Format?您可以去掉conn.close,因为using语句将隐式地执行此操作

using (SqlConnection conn = new SqlConnection(cs))
{
   using (SqlCommand command = conn.CreateCommand())
   {
      conn.Open();
      string cmdText = "INSERT INTO UserFiles VALUES('" + obj.userRef.ToString() + "','name','name','name','name','name','name')";
      command.CommandText = cmdText;
      command.ExecuteNonQuery();
   }
}
您的cmdText需要在的末尾再添加一个

using (SqlConnection conn = new SqlConnection(cs))
{
   using (SqlCommand command = conn.CreateCommand())
   {
      conn.Open();
      string cmdText = String.Format("INSERT INTO UserFiles VALUES(@userRef, @name1, @name2, @name3, @name4, @name5, @name6)");
      command.Parameters.AddVithValue("@userRef", obj.userRef.ToString()); 
      command.Parameters.AddVithValue("@name1", name); 
      command.Parameters.AddVithValue("@name2", name); 
      command.Parameters.AddVithValue("@name3", name); 
      command.Parameters.AddVithValue("@name4", name); 
      command.Parameters.AddVithValue("@name5", name); 
      command.Parameters.AddVithValue("@name6", name); 
      command.CommandText = cmdText;
      command.ExecuteNonQuery();
      conn.Close();
   }
}
正如我在我的报告中所说,你应该始终使用。您的代码已为附件打开

您的cmdText需要在末尾再添加一个附件

using (SqlConnection conn = new SqlConnection(cs))
{
   using (SqlCommand command = conn.CreateCommand())
   {
      conn.Open();
      string cmdText = String.Format("INSERT INTO UserFiles VALUES(@userRef, @name1, @name2, @name3, @name4, @name5, @name6)");
      command.Parameters.AddVithValue("@userRef", obj.userRef.ToString()); 
      command.Parameters.AddVithValue("@name1", name); 
      command.Parameters.AddVithValue("@name2", name); 
      command.Parameters.AddVithValue("@name3", name); 
      command.Parameters.AddVithValue("@name4", name); 
      command.Parameters.AddVithValue("@name5", name); 
      command.Parameters.AddVithValue("@name6", name); 
      command.CommandText = cmdText;
      command.ExecuteNonQuery();
      conn.Close();
   }
}

正如我在我的报告中所说,你应该始终使用。您的代码已打开以获取附件。请将表定义和cmdText的内容放入问题中。obj.userRef.ToString的值是多少?如果它包含一个单引号符号或一些其他未替换的符号,那么它可能会打断您的查询,至少sql语句中缺少值的结束符。您应该始终使用。您的代码已为attakcs打开。@不太可能-只要值的数量及其类型与架构匹配。请将表定义和cmdText的内容放在问题中。obj.userRef.ToString的值是多少?如果它包含一个单引号符号或一些其他未替换的符号,那么它可能会打断您的查询,至少sql语句中缺少值的结束符。您应该始终使用。您的代码已为attakcs打开。@Leetylor不太可能-只要值的数量及其类型与架构匹配。您可能希望将答案更改为使用参数,就像您在对问题的评论中正确建议的那样。您可能希望将答案更改为使用参数,就像你在对这个问题的评论中正确地建议的那样。