纠正语法

时间:2011-02-03 12:44:26

标签: c# sql ms-access

我不得不更新一个表我尝试了两个查询但它显示语法错误任何人都可以帮助我请知道这是基本但我是一个初学者

String query = "Update masterusertable set username='" + txtName.Text + "',and set password='" + txtpassword.Text + "',and set phoneno='" + txtphoneno.Text + "',and set adress='" + rtxtAdress.Text + "' where userid ='" + txtuserid.Text + "'";

String query = "Update masterusertable set username='" + txtName.Text + "', password='" + txtpassword.Text + "', phoneno='" + txtphoneno.Text + "', adress='" + rtxtAdress.Text + "' where userid ='" + txtuserid.Text + "'";

任何其他的想法我有很多大表要更新,使用任何其他想法更新是好的。

5 个答案:

答案 0 :(得分:4)

这对SQL Injection attacks很开放 - 您应该更改为parameterized queries

至于UPDATE的语法,只有一个SET子句:

UPDATE masterusertable 
SET
 username= @username,
 password= @password,
 phoneno= @phoneno,
 adress= @address 
WHERE userid = @userid

答案 1 :(得分:1)

您不必对所有 SET 字段使用 AND 。也不需要多次使用 SET 您可以按,。

分隔它们
update table set col1=val1,col2=val2.... where coln=valn

答案 2 :(得分:0)

您要更新的每个字段都不需要SET命令。你只需要第一个SET命令。

试试这个:

String query = "Update masterusertable set username='" + txtName.Text + "',and password='" + txtpassword.Text + "',and phoneno='" + txtphoneno.Text + "',and adress='" + rtxtAdress.Text + "' where userid ='" + txtuserid.Text + "'";

此外,将有助于查看实际查询发送到SQL Server(如果这是您正在使用的数据库)以及您获得的错误。

答案 3 :(得分:0)

您是否使用字符串或数字作为主键? 语句的WHERE部分正在格式化字符串:

where userid ='" + txtuserid.Text + "'"

这就是你想要的吗?

但是既然你说问题是语法错误,这似乎没有,我想这不是问题。

答案 4 :(得分:0)

为了便于阅读,我还建议你在连接字符串时使用string.Format ..

String query = string.Format(
            "Update masterusertable set username='{0}', password='{1}', phoneno='{2}', adress='{3}' where userid ='{4}'",
            txtName.Text, 
            txtpassword.Text, 
            txtphoneno.Text, 
            rtxtAdress.Text, 
            txtuserid.Text
        );