[英]Error while executing query in C#, SQL Server: trying to update if value already present else insert
我试图执行一个条件,如果用户名已经存在,然后更新行,否则插入用户名和密码。
这是我的代码如下:
using (SqlCommand cmd = new SqlCommand("INSERT INTO Users(Username,Password) VALUES(@User,@password) ON DUPLICATE KEY UPDATE Username=VALUES(Username), Password=VALUES(Password)"))
{
cmd.Connection = con;
cmd.Parameters.AddWithValue("@User", TextBox3.Text);
cmd.Parameters.AddWithValue("@password", Pwd);
con.Open();
cmd.ExecuteNonQuery();
}
我收到以下错误:
关键字“ON”附近的语法不正确。
我无法弄清楚这有什么问题。 有人可以帮帮我吗?
在SQL Server中,您需要使用如下所示的查询:
-- check if exists (by username) - if found, update password
IF EXISTS (SELECT * FROM dbo.Users WHERE Username = @User)
UPDATE dbo.Users
SET Password = @password
WHERE Username = @User
ELSE
INSERT INTO dbo.Users(Username, Password)
VALUES(@User, @password)
而在我的评论中提到- 不使用.AddWithValue
功能(见链接的博客帖子详细信息),但是用这个来代替:
cmd.Parameters.Add("@User", SqlDbType.VarChar, 100).Value = TextBox3.Text;
另外,请不要将密码以明文形式存储在数据库中!
看起来你正在使用MySQL语法。 我认为SQL Server没有ON DUPLICATE KEY。 你可能想要一个MERGE语句 。
@marc_s
String query = @"IF EXISTS (SELECT * FROM Users WHERE Username = @ User)
UPDATE Users
SET Password = @password
WHERE Username = @ User
ELSE
INSERT INTO Users(Username, Password)
VALUES(@ User, @password)";
using (SqlCommand cmd = new SqlCommand(query))
我使用你提供的代码并用于调试点以检查代码是否正在执行,它仍然没有更新或插入值。我不能在SQL服务器中运行查询因为每次我打开查询窗口VSudio重启,我正在使用Visual Studio的试用版
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.