cxiプログラムで「like」を使ってaccessデータベースステートメントを調べます.
3621 ワード
accessデータベースを使ったcci手順を書いているうちに、何か奇妙な問題が起こった.例えば「like」を使ってあいまいなクエリを行い、accessクエリビューでは「*」を使ってあいまいなマッチングを行います.
プログラム内のクエリー文字列も「*」を使うべきだと思いましたが、実はそうではありません.
accessデータベースの中でデバッグ用「*」を使って、プログラムの中で「%」を使って変更します.でないと、何のデータも確認できないし、vsはまだ何の間違いも報告していません.デバッグは原因が見つけられません.
プログラム内のクエリー文字列も「*」を使うべきだと思いましたが、実はそうではありません.
accessデータベースの中でデバッグ用「*」を使って、プログラムの中で「%」を使って変更します.でないと、何のデータも確認できないし、vsはまだ何の間違いも報告していません.デバッグは原因が見つけられません.
try
{
_strSql="";
if (dataGridView1.Rows.Count <= 1)
{
if (dataGridView1.Rows[0].Cells[0].Value == null || dataGridView1.Rows[0].Cells[1].Value == null || dataGridView1.Rows[0].Cells[2].Value == null)
{
return;
}
else
{
string filed = GetArrayElement(Cxzd, dataGridView1.Rows[0].Cells[0].Value.ToString().Trim(), 1);
//string type = GetArrayElement(Cxzd, filed, 2);
string cs = Cxfs[dataGridView1.Rows[0].Cells[1].Value.ToString().Trim()].ToString();
string content = dataGridView1.Rows[0].Cells[2].Value.ToString();
if (cs == "like")
{
content = "'%" + content + "%'";
}
_strSql = string.Format("where {0} {1} {2} ", filed, cs, content);
}
}
後に資料を調べます.元々はaccessドライバを接続する問題です.私のプログラムではAccessまではoledbドライバを使っていますので、ここでは「*」は使えません.「%」は必須です.DAOでAccessデータベースにアクセスする場合は、必ず「*」を使います.