我正在尝试检查数据库列中是否存在该值。我知道这个问题好几次,但没有一个能解决我的问题。我在很多方面尝试过它。无论如何我的下面的代码通过一个例外;
“发生了'System.ArgumentException'类型的未处理异常 System.Data.dll附加信息:不存在映射 对象类型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);
}
答案 0 :(得分:3)
您要在此行txt_PinCode
txt_PinCode.Text
,一个文本框对象而不是字符串(cmd.Parameters.AddWithValue("PINCODE", txt_PinCode);
)
答案 1 :(得分:2)
您没有传递传递给方法的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);
}
答案 2 :(得分:1)
您正在尝试传递文本框本身,但不是文本。更改代码
cmd.Connection = conn;
cmd.CommandText = "SELECT PINCODE from UserInput where PINCODE = '@pincode'";
cmd.Parameters.AddWithValue("PINCODE", txt_PinCode.Text);
答案 3 :(得分:1)
在这行代码中,您将发送文本框对象而不是文本。
cmd.Parameters.AddWithValue("PINCODE", txt_PinCode);
将其更改为:
cmd.Parameters.AddWithValue("PINCODE", txt_PinCode.Text);