如果表中的ID存在显示消息

时间:2013-10-08 11:26:42

标签: c# wpf

我想说:如果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();
}

3 个答案:

答案 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);