正在编写一个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附近的异常语法异常。我哪里错了?语法是否正确?我该如何纠正呢?
代码:
public int checkout_visitor(int check_inn, int checkout, String time_out, String date_out, String cnic)
{
try
{
connection.Open();
String query = "select v_id from visitor where visitor.cnic=" + cnic;
command = connection.CreateCommand();
command.CommandText = query;
visitor_id = command.ExecuteScalar().ToString();
int v_idd = Int32.Parse(visitor_id);
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;
//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;
command = connection.CreateCommand();
command.CommandText = query2;
int result = command.ExecuteNonQuery();
connection.Close();
return result;
}
catch (Exception e)
{
return -1;
}
}
答案 0 :(得分:0)
您是否看到了结果查询?在我看来,你错过了一些逗号,但你应该打印(并发布)生成的查询,以便更好地理解这个问题。
答案 1 :(得分:0)
列名称之间缺少','。 它就像Update Table Set col1 = 3,col2 ='test'
答案 2 :(得分:0)
问题:
1.您没有使用逗号,
正确分离参数
2.你没有在SET
和check_in
参数之间提供沙漠。
试试这个:
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;
答案 3 :(得分:0)
问题是query2
字符串将成为一条直线:
UPDATE visit_detail SET[check_in] = " 1[check_out] = 2[time_out] = some time[date_out] =some datewhere visit_detail.v_id = 5
因此,您已经可以看到datewhere
是一个incorect,字符串参数周围也没有'
个字符,参数之间没有逗号。
快速解决这个问题:
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);
但这仍然无效。如果time_out
包含'
个字符,您将再次收到错误。
你应该真正使用的是: SqlCommand.Parameters 这是将参数传递给你的命令的正确方法,所有问题都将由你来处理。