2016-03-22 51 views
0

我想驗證數據庫中是否存在某個ID,這就是我到目前爲止的代碼。來自MySQL數據庫的C#驗證數據庫邏輯錯誤

MySqlConnection myConn = new MySqlConnection(MyConnectionString); 
MySqlCommand cmd; 
string str; 
str = "select student_id from student_info where student_id =" + searchTb.Text; 
cmd = new MySqlCommand(str, myConn); 
MySqlDataReader myReader; 
myConn.Open(); 
myReader = cmd.ExecuteReader(); 
int count = 0; 
while (myReader.Read()) 
{ 
    count = count + 1; 
} 
if (count == 1) 
{ 
    MessageBox.Show("Data Exist."); 

} 
else if (count > 1) 
{ 
    MessageBox.Show("Data has duplicate."); 
} 
else 
{ 
    MessageBox.Show("Data doesn't exist."); 
} 
myConn.Close(); 

我說的問題是合乎邏輯的,有事情做了MySqlDataReader怎麼把我不管輸入是否存在與否它總是顯示「數據複製」你的幫助是非常感謝,謝謝!

回答

0

是因爲你有最後兩條消息混淆了嗎? 「count> 1」大概意思是重複的,但你有它說「數據不存在」。這應該在「else」(即count == 0)塊中。

當然還有其他的事情可以做 - 例如,如果您的SQL是

從student_info SELECT COUNT(*),其中student_id數據=」 + searchTb.Text;

那麼你可以使用cmd.ExecuteScalar直接得到結果,而無需環路

。另外,你應該查看SQL注入攻擊,因爲你構建你的sql字符串的方式容易受到它們的威脅。

+0

哦,是的,我得到了混淆,但仍然給我同樣的結果,無論我輸入正確還是錯誤。仍然去,否則) –

+0

我會抓住被執行的SQL並運行它自己對數據庫,以確保它實際上我窩RKS。 –

+0

傻了,我忘了用另一個單引號結束我的查詢。謝謝你的提示! str =「select count(*)FROM student_info WHERE student_id ='」+ searchTb.Text +「'」; –