受け取っています
OleDBExceptionは、「クエリ
式の構文エラー(演算子がありません)」(StudentID = 100'OR StudentName ='Nick'OR StudentCNCI ='78894452)Bob'の未処理エラーでした。
private void btnFind_Click(object sender, EventArgs e)
{
string title = textBox1.Text.ToString();
string queryString = "SELECT * FROM Students WHERE (StudentID = " + StudIDTb.Text.ToString() + "' OR StudentName = '" + StudNameTb.Text.ToString() + "' OR StudentCNCI = '" + StudCNCITb.Text.ToString() + ")" + title;
OleDbCommand command = new OleDbCommand();
command.CommandText = queryString;
command.Connection = myCon;
myCon.Open();
OleDbDataReader dr = command.ExecuteReader(); // error pointing here
while (dr.Read())
{
StudIDTb.Text += String.Format("StudentID: {0}\n", dr["StudentID"].ToString());
StudNameTb.Text += String.Format("StudentName: {0}\n", dr["StudentName"].ToString());
StudCNCITb.Text += String.Format("StudentCNIC: {0}\n", dr["StudentCNIC"].ToString());
StudDOBTb.Text += String.Format("StudentDOB: {0}\n", dr["StudentDOB"].ToString());
}
myCon.Close();
}
私も試しました...
string queryString = "SELECT * FROM Students WHERE (StudentID = " + StudIDTb.Text + "' OR StudentName = '" + StudNameTb.Text + "' OR StudentCNCI = '" + StudCNCITb.Text + ")" + title;
私はあなたに間違った印象を与えたくありません。私は「怠惰」ですが、間違ってクエリを実行したか、タイプミスをしたか、何か別の可能性があるため、このエラーが発生していると思います。よろしくお願いします。
psパラメータ化されたクエリを使用していないという批判を受けていることはわかっています。基本的な権利が得られたら変更します。私はここで多くの同様の質問がなされていることを知っていますが、それでも正しく理解することはできません。
UPDATE1 私はそれをに変更しました
"SELECT * FROM Students WHERE StudentID = " + StudIDTb.Text + " OR StudentName = '" + StudNameTb.Text + "', OR StudentCNCI = '" + StudCNCITb.Text + ")";
エラーが発生しました...
クエリ式の構文エラー(コンマ)
私はそれを調べています
アップデート2
string queryString = "SELECT * FROM Students WHERE StudentID = " + StudIDTb.Text + "' OR StudentName = '" + StudNameTb.Text + "' OR StudentCNCI = '" + StudCNCITb.Text + "'";
同じエラーを受け取ります。
それを調べて
Update 3 解決できない場合は、問題を解決することを意味し、コードの問題を簡単に見つけることができる場合は、パラメーター化されたクエリを使用することを強くお勧めします。