0

我想说:如果 textbox1 中的 ID 存在于 sql 表中,则显示一条消息。否则进入下一页。

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();
}
4

3 回答 3

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.

于 2013-10-08T11:29:25.900 回答
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);
于 2013-10-08T11:31:33.833 回答
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);
于 2013-10-08T11:36:37.193 回答