我想说:如果sql表中存在textbox1中的ID,则显示一条消息。否则进入下一页。
private void btCode_Click(object sender, RoutedEventArgs e)
{
sc.Open();
SqlDataReader reader = null;
string rwID = txtID.Text;
SqlCommand cmd = new SqlCommand("select ID from Table where @rwID='" + txtID.Text + "'", sc);
cmd.Parameters.AddWithValue("@rwID", txtID.Text);
reader = cmd.ExecuteReader();
if (reader != null && reader.HasRows)
{
CodeView w = new CodeView(cbRe.Text, txtID.Text);
w.Show();
}
else
{
MessageBox.Show("Already Assigned");
}
sc.Close();
}
答案 0 :(得分:2)
您的真正问题在于您的sql命令以及如何使用参数化的sql。
将您的@rwID
更改为您的真实列名称。并了解parameterized queries
语法的工作原理。
使用ExecuteNonQuery
代替ExecuteReader
。
对连接执行Transact-SQL语句并返回 受影响的行数。
SqlCommand cmd = new SqlCommand("select ID from Table where rwID = @rwID", sc);
cmd.Parameters.AddWithValue("@rwID", txtID.Text);
int rows = cmd.ExecuteNonQuery();
if(rows > 0)
{
//Exist in database
}
else
{
//Doesn't exist in database
}
我假设您的真实列名为rwID
。
答案 1 :(得分:1)
假设txtID.Text
的值是字符串“3”。
之后
SqlCommand cmd = new SqlCommand("select ID from Table where @rwID='" + txtID.Text + "'", sc);
命令文本的值为
"select ID from Table where @rwID='3'"
之后,使用
将参数值设置为“3”cmd.Parameters.AddWithValue("@rwID", txtID.Text);
有效地获得
"select ID from Table where '3'='3'"
对于每一行都是如此,只要有行就行。只是做:
SqlCommand cmd = new SqlCommand("select ID from Table where ID = @rwID", sc);
cmd.Parameters.AddWithValue("@rwID", txtID.Text);
答案 2 :(得分:0)
更改以下行
SqlCommand cmd = new SqlCommand("select ID from Table where @rwID='" + txtID.Text + "'", sc);
到
SqlCommand cmd = new SqlCommand("select ID from Table where rwID=@rwID", sc);