我在网络表单中有三个文本框,用户必须输入用户名,密码和IC号才能注册。如果输入的IC编号与数据库中任何记录的IC值相匹配,它将更新用户输入的用户名和密码到该记录的用户名字段和密码字段中,该字段具有匹配的IC。如果该人输入的IC不匹配数据库中任何记录的IC,它将不会更新任何现有记录,并且它将说明标签中不存在IC。目前lblErrorMessage.Text =“IC不存在”;在catch异常中不起作用。如果输入的IC在数据库中不存在,它只会重定向到已注册的内容。有什么帮助吗?
答案 0 :(得分:1)
您需要UPDATE
而非INSERT
,INSERT
用于插入新记录。您当前正在做的是更新现有记录,而不是插入它。
像:
using(SqlCommand cmd = new SqlCommand())
{
Guid guid = Guid.NewGuid();
string sql = @"UPDATE patient
SET
pUserName = @pUserName,
pPassword = @pPassword
WHERE pIC = @pIC";
cmd.Parameters.AddWithValue("@pIC", txtIC.Value);
cmd.Parameters.AddWithValue("@pUsername", txtUsername.Value);
cmd.Parameters.AddWithValue("@pPassword", txtPassword.Value);
cmd.Connection = con;
cmd.CommandText = sql;
con.Open();
cmd.ExecuteNonQuery();
//rest of the code
}
答案 1 :(得分:0)
UPDATE table_name
SET column1 = value1, column2 = value2,...
WHERE some_column = some_value;
要“插入”现有记录。你需要更新它。
答案 2 :(得分:0)
使用UPDATE
声明代替Insert
将此string sql
替换为此
string sql = "UPDATE patient SET pUsername=@pUsername, pPassword=@pPassword "+;
"WHERE pIC=@PIC";
答案 3 :(得分:0)
我不熟悉C#,但你应该这样做:
首先,检查数据库的用户输入;
("SELECT * FROM patient WHERE pIC = 'picinputVar'");
然后,如果返回任何值,请使用if语句进行检查。如果它没有打印按摩说pIC不存在。
如果确实使用了UPDATE而不是INSERT
("UPDATE patient SET pUsername='usernameinput', pPassword='passwordinput' WHERE pIC='picinputVar'");