2017-05-09 5 views
-1

に一致する結果だけではなく、その後、テーブル全体のデータを返すSQL SELECT文を書いた:私はボタンのクリックで実行されます、次のコードを持っている私の検索

protected void Button2_Click(object sender, EventArgs e) 
     { 
      String str = "SELECT * " + 
       "FROM ConcernTicket INNER JOIN Employee " + 
       "ON ConcernTicket.EmployeeReportedToID = Employee.EmployeeId " + 
       "WHERE (Employee.FirstName LIKE '%' + @search2 + '%')"; 
      SqlCommand xp = new SqlCommand(str, vid); 
      xp.Parameters.Add("@search2", SqlDbType.NVarChar).Value = 
      TextBox1.Text; 

      vid.Open(); 
      xp.ExecuteNonQuery(); 
      SqlDataAdapter da = new SqlDataAdapter(); 
      da.SelectCommand = xp; 
      DataSet ds = new DataSet(); 
      da.Fill(ds, "Employee.FirstName"); 
      GridView2.DataSource = ds; 
      GridView2.DataBind(); 
      vid.Close(); 
    } 

私が直面しています、問題があることです検索はエラーなしで実行されますが、FirstName変数が一致する場所に結果を返す代わりに、現在の懸念チケットがすべて表示されます。私はそれがSELECTステートメントでかなり簡単な修正だと仮定していますが、何らかの理由で私は何がうまくいかないのか把握できませんでした。私はちょうどSQLとの作業を始めたので、私はこのような愚かな問題を抱えていることをお詫びします。

+0

なぜあなたは 'ExecuteNonQuery'と呼ばれていますか?あなたのコードは私の質問のように見えます。 –

+0

dbに送信するクエリを確認する必要があります。 http://stackoverflow.com/questions/1412863/how-do-i-view-the-sql-generated-by-theentity-framework –

+1

私はあなたがデータベースに渡す '@ search2'の値を調べます。すべての結果を取り戻す場合は、 'WHERE(Employee.FirstName LIKE %%)'を送信するコードエラーが発生している可能性があります。英語では基本的にパーサーに、従業員の名前が気にかからないことを伝えています。 – DanK

答えて

1

TextBox1.Textが空でないことを確認してください。それが空の場合、クエリは次のようになります。

WHERE (Employee.FirstName LIKE '%%')"; 

@search2が適切に交換されていることを確認してください。 +演算子は、MySQLで期待するものではありません。おそらくこれは、あなたが探しているものです:

+0

ありがとう!私はTextBox2用であったはずの2番目のもののために私の最初の検索ボックスからコードをコピーしましたが、テキストボックスのIDを変更するのを忘れていました。私はちょうど私がSELECT文で何かを見落としていたと仮定して、ずっとそれを見つめていました。私は大いに感謝します! – SCarter

+0

大歓迎です – redolent

0

あなたの問題を助け

"WHERE (Employee.FirstName LIKE '%@search2%')"; 

希望はされていないSQLクエリ。実際には、ExecuteNonQuery()を使用して選択結果を抽出します。 ExecuteNonQuery()は単一の整数を返します。このようなコードを使用して、問題が解決しない場合はお知らせください。

string connetionString = null; 
      SqlConnection connection ; 
      SqlDataAdapter adapter = new SqlDataAdapter(); 
      DataSet ds = new DataSet(); 
      int i = 0; 
      connetionString = "Data Source=ServerName;Initial Catalog=DatabaseName;User ID=UserName;Password=Password"; 
      connection = new SqlConnection(connetionString); 
      try 
      { 
       connection.Open(); 
       adapter.SelectCommand = new SqlCommand("Your SQL Statement Here", connection); 
       adapter.Fill(ds); 
       connection.Close(); 
       for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++) 
       { 
        MessageBox.Show(ds.Tables[0].Rows[1].ItemArray[1].ToString()); 
       } 
      } 
関連する問題