2016-08-19 5 views
-2
protected void custo_search_Click(object sender, EventArgs e) 
{ 
    conn.Open(); 

    if (appo_fname.Text != null || appo_lname.Text != null || appo_num.Text != null) 
    { 
     DataTable dt = new DataTable(); 

     MySqlDataReader myReader = null; 

     MySqlCommand myCommand = new MySqlCommand("SELECT customers.First_name,customers.Last_name,customers.Phone_num From customers INNER JOIN appointments On customers.Phone_num=appointments.Phone_num Where customers.Phone_num='" + search_txt.Text+"' ", conn); 

     myReader = myCommand.ExecuteReader(); 

     while (myReader.Read()) 
     { 
      appo_fname.Text = (myReader["customers.First_name"].ToString()); 
      appo_lname.Text = (myReader["customers.Last_name"].ToString()); 
      appo_num.Text = (myReader["customers.Phone_num"].ToString()); 
     } 

     conn.Close(); 
    } 
} 

同じプライマリキーを使用して2つのテーブルを接続しようとしていますので、検索テキストボックスに電話番号を入力すると、その番号が他のテーブルに存在するかどうかがチェックされます。名前、氏名、電話番号を他のテキストボックスに入力して、入力しなくても何かが入力されずにコード内でコードが実行されない場合は、「while」のコードをスキップします。あるテーブルの情報を別のテーブルのプライマリキーに基づいてテキストボックスに取り込む方法は?

+1

私の電話番号は、 " ';データベースDB_NAMEを()ドロップ''" である(myReader.HasRows)場合、' {行う にあなたのwhile文を変更し –

+0

{ appo_fname.Text =(myReader [ "customers.First_name"] .ToString()); appo_lname.Text =(myReader ["customers.Last_name"]。ToString()); appo_num.Text =(myReader ["customers.Phone_num"]。ToString()); } } while(myReader.NextResult()); – Kami

+0

例外があるか、クエリによって返されたデータがないだけですが、ここのコードはOKです。SQLインジェクションを気にする必要があります。 sq管理スタジオでクエリを実行し、クエリが何かを返すかどうかを確認することができます。 –

答えて

0

appo_fname.Text = (myReader["customers.First_name"].ToString()); 
appo_lname.Text = (myReader["customers.Last_name"].ToString()); 
appo_num.Text = (myReader["customers.Phone_num"].ToString()); 

へ:

appo_fname.Text = (myReader["First_name"].ToString()); 
appo_lname.Text = (myReader["Last_name"].ToString()); 
appo_num.Text = (myReader["Phone_num"].ToString()); 

(列名の前にテーブル名を削除します) また、文字列連結でselect文を作成しているため、コードはSQLインジェクションに対して脆弱です。 select文には、電話番号をパラメータとして渡す必要があります。

私はconnオブジェクトをどのように作成しているのかわかりませんが、 'using'ステートメントで完了していることを確認したいと思います。

関連する問題