更新查询SQL的问题

时间:2013-12-09 11:31:07

标签: 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);

用于更新我的列的查询由:

给出
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;
        }

    }

4 个答案:

答案 0 :(得分:0)

您是否看到了结果查询?在我看来,你错过了一些逗号,但你应该打印(并发布)生成的查询,以便更好地理解这个问题。

答案 1 :(得分:0)

列名称之间缺少','。 它就像Update Table Set col1 = 3,col2 ='test'

答案 2 :(得分:0)

问题:

1.您没有使用逗号,正确分离参数 2.你没有在SETcheck_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 这是将参数传递给你的命令的正确方法,所有问题都将由你来处理。