2016-03-22 8 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

最後の2つのメッセージが混在しているためですか? "count> 1"はおそらく重複を意味しますが、 "データは存在しません"と言っています。これは、 "else"ブロック(count == 0)ブロック内になければなりません。

もちろん他にもできることがあります。あなたのSQLは

SELECT COUNT(*)STUDENT_ID =」+ searchTb.Text student_infoからだった場合は、。

、あなたがループを必要とせずに、直接結果を得るためにcmd.ExecuteScalarを使用することができ

+0

ああ、私はそれを混ぜ合わせましたが、私が正しいか間違った入力をしても、私には同じ結果が得られます。(また、あなたはSQLインジェクション攻撃を調べるべきです。まだ行く、他の) –

+0

私は実行されているSQLをつかむだろうと実際にそれを確認するためにdbに対してあなた自身を実行するrks。 –

+0

愚かな私、別の一重引用符で私のクエリを終了するのを忘れました。先端のthoをありがとう! str = "select count(*)FROM student_info where student_id = '" + searchTb.Text + "'"; –

関連する問題