[英]How do I check if the record already exists in SQL database?
我正在尝试检查该值是否存在于数据库列中。 我知道这个问题曾问过几次,但没有一个能解决我的问题。 我已经尝试了很多方法。 无论如何,我的以下代码都是通过异常产生的;
“在System.Data.dll中发生了类型为'System.ArgumentException'的未处理的异常。附加信息:从对象类型System.Windows.Forms.TextBox到已知的托管提供程序本机类型不存在映射。”
解决了作为错误的异常的问题。 但是,尽管记录在数据库中,但它仍然无法正常工作,但并没有限制我。
谁能告诉我我的代码有什么问题,代码是;
private void btn_Register_Click(object sender, EventArgs e)
{
lbl_Available.Visible = false;
lbl_Empty.Visible = false;
bool hasValue1 = string.IsNullOrWhiteSpace(txt_PinCode.Text);
bool hasValue2 = string.IsNullOrWhiteSpace(txt_Name.Text);
if (!hasValue1 && !hasValue2)
{
string pincode = txt_PinCode.Text;
if (UserExists(pincode))
{
lbl_Available.Visible = true;
return;
}
else
{
this.Hide();
RegCluePoint frm = new RegCluePoint();
frm.lbl_PinCode.Text = txt_PinCode.Text;
frm.lbl_Name.Text = txt_Name.Text;
frm.Show();
}
}
else
{
lbl_Empty.Visible = true;
}
}
private bool UserExists(string pincode)
{
//pincode = txt_PinCode.Text
//SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT PINCODE from UserInput where PINCODE = '@pincode'";
cmd.Parameters.AddWithValue("PINCODE", pincode);
if (conn.State != ConnectionState.Open)
conn.Open();
string pinString = (string)cmd.ExecuteScalar();
conn.Close();
return (pinString != null);
}
您发送txt_PinCode
,一个文本框对象,而不是一个字符串( txt_PinCode.Text
在此行中) cmd.Parameters.AddWithValue("PINCODE", txt_PinCode);
您没有传递传递给该方法的pincode
,而是传递了文本框本身(甚至不是文本框的值)。
private bool UserExists(string pincode)
{
//pincode = txt_PinCode.Text
//SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT PINCODE from UserInput where PINCODE = '@pincode'";
cmd.Parameters.AddWithValue("@pincode", pincode);
if (conn.State != ConnectionState.Open)
conn.Open();
//Execute scalar returns the first column of the first row in the result set
string pinString = (string)cmd.ExecuteScalar();
conn.Close();
return (pinString != null);
}
您正在尝试传递文本框本身,而不传递文本。 更改密码
cmd.Connection = conn;
cmd.CommandText = "SELECT PINCODE from UserInput where PINCODE = '@pincode'";
cmd.Parameters.AddWithValue("PINCODE", txt_PinCode.Text);
在这行代码中,您将发送文本框对象而不是文本。
cmd.Parameters.AddWithValue("PINCODE", txt_PinCode);
更改为:
cmd.Parameters.AddWithValue("PINCODE", txt_PinCode.Text);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.