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 に答える
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 に答える