Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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的问题_C#_Sql_Sql Server_Visual Studio - Fatal编程技术网

C# 更新查询SQL的问题

C# 更新查询SQL的问题,c#,sql,sql-server,visual-studio,C#,Sql,Sql Server,Visual Studio,我正在写一个c代码,试图更新表中10列中的4列。以下是我发送查询参数的函数类型: public int checkout_visitor(int check_inn, int checkout, String time_out, String date_out, String cnic) 现在,我在程序的某个地方调用这个函数,在参数中提供值: checkout_visitor(chk_in,chk_out,t_out,dt_out,idcardnum); 我用来更新我的列的查询由以下公式给出

我正在写一个c代码,试图更新表中10列中的4列。以下是我发送查询参数的函数类型:

public int checkout_visitor(int check_inn, int checkout, String time_out, String date_out, String cnic)
现在,我在程序的某个地方调用这个函数,在参数中提供值:

checkout_visitor(chk_in,chk_out,t_out,dt_out,idcardnum);
我用来更新我的列的查询由以下公式给出:

String query2 = " UPDATE visit_detail SET[check_in] = " + check_inn + "[check_out] = " + checkout + "[time_out] = " + time_out + "[date_out] =" + date_out + "where visit_detail.v_id = "+ v_idd;
给我一个例外,chkout附近的语法不正确。我哪里错了??语法正确吗?我如何纠正它

代码:


您看到结果查询了吗?在我看来,您缺少了一些逗号,但您应该打印(并发布)结果查询,以便更好地了解问题。

您在列名之间缺少“,”。
它类似于更新表集合col1=3,col2='test'

问题:

1.您没有正确使用逗号分隔参数

2.您没有给出
设置
检入
参数之间的空间

试试这个:

String query2 = "UPDATE visit_detail SET [check_in] = " + check_inn + ",[check_out] = " + checkout + ",[time_out] = '" + time_out + "',[date_out] ='" + date_out + "' where visit_detail.v_id = "+ v_idd;

问题在于
query2
string将是以下内容:

UPDATE visit_detail SET[check_in] = " 1[check_out] = 2[time_out] = some time[date_out] =some datewhere visit_detail.v_id = 5
因此,您已经可以看到有不正确的
datewhere
,字符串参数周围也没有
字符,参数之间也没有逗号

对此的快速解决办法是:

String query2 = String.Format("UPDATE visit_detail SET [check_in]={0}, [check_out]={1}, [time_out]='{2}', [date_out]='{3}' where visit_detail.v_id={4};", check_inn, checkout, time_out, date_out, v_idd);
但这仍然是无效的。如果
超时
包含
字符,您将再次收到错误

您真正应该使用的是:
这是一个传递参数到你的命令的正确方式,所有的问题都会为你负责。

你忘记了SET和CHIGION SET[CHECZIN ] = > SET[CHECKIN ]之间的空间,请考虑使用参数而不是盲目地连接字符串值。这些用户是否可以输入?我想输入值
1234');下表访问详细信息--我的身份证号码:“更新就诊详情集[check_in]=0[check_out]=1[time_out]=04:43 PM[date_out]=12-9-2013where visit_detail.v_ID=2”@user3081555:尝试我的解决方案,只需替换我的答案中提供的query2即可。@user3081555:用单引号括起日期值来编辑答案。现在检查
String query2 = String.Format("UPDATE visit_detail SET [check_in]={0}, [check_out]={1}, [time_out]='{2}', [date_out]='{3}' where visit_detail.v_id={4};", check_inn, checkout, time_out, date_out, v_idd);