2016-12-18 14 views
0

これは私のコードです。存在しないIDを入力すると、エラーメッセージが表示されます。プログラムがこのIDが存在しないことを認識すると、メッセージボックスを表示したいと思います。テキストボックスから入力した「ID」がMySqlテーブルに存在しないことを確認する方法は?

public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void label1_Click(object sender, EventArgs e) 
    { 

    } 

    private void BTN_INSERT_Click(object sender, EventArgs e) 
    { 
     String selectquery = "SELECT * FROM imgbase.Clients WHERE ID = '" + BOX_ID.Text + "' "; 
     command = new MySqlCommand(selectquery, connection); 


     da = new MySqlDataAdapter(command); 

     DataTable table = new DataTable(); 

     da.Fill(table); 


     BOX_FULLNAME.Text = table.Rows[0][1].ToString(); 

     BOX_INFO.Text = table.Rows[0][2].ToString(); 

     byte[] img = (byte[])table.Rows[0][3]; 

     MemoryStream ms = new MemoryStream(img); 

     pictureBox1.Image = Image.FromStream(ms); 
     da.Dispose(); 



    } 

答えて

0

IDが存在しない場合は、0行またはレコードをフェッチします。このような場合、あなたはところで、SQLインジェクションの脆弱性があり、ユーザの入力に連結されたクエリを使用して停止むしろ後SqlParameter

String selectquery = "SELECT * FROM imgbase.Clients WHERE ID = @ID"; 
    command = new MySqlCommand(selectquery, connection); 
    MySqlParameter param = new MySqlParameter(); 
    param.ParameterName = "@ID"; 
    param.Value   = Convert.ToInt32(BOX_ID.Text.Trim()); 
    command.Parameters.Add(param); 

を使用してパラメータ化クエリを使用

if(table.Rows.Count == 0) 
    MessageBox.Show("No Records with given ID ..."); 

のようなあなたのDataTableRowsプロパティを確認することができますあなたのデータテーブルを埋める返された行数をチェックするだけです。行がフェッチされた場合は、処理を行い、メッセージをスローして呼び出し元に戻します。

da.Fill(table); 
if(table.Rows.Count == 0) 
{ 
    MessageBox.Show("No Records with given ID ..."); 
    return; 
} 

//Rows present and thus do processing 
1

ので、あなたが

try{ 
    if(table.Rows.Count == 0) 
     { MessageBox.Show("No Records with given ID ..."); 
     return; 
     } 
} 
catch{ 
error message; 
} 
を使用することができます
関連する問題