1
public void LoadDB()
{
    string FileName = @"c:\asdf.accdb";
    string query = "SELECT ID, Field1 FROM Table1 WHERE ID=? AND Field1=?";
    string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName;

    OleDbConnection odc = new OleDbConnection(strConn);
    dAdapter = new OleDbDataAdapter();
    OleDbCommand cmd = new OleDbCommand(query,odc);

    cmd.Parameters.Add("?", OleDbType.Integer, 5).Value = 1234;
    cmd.Parameters.Add("?", OleDbType.BSTR, 5).Value ="asdf";

    dAdapter.SelectCommand = cmd;

    ds = new DataSet();
    dAdapter.Fill(ds);
    dataGridView1.DataSource = ds.Tables[0];
}

アクセスファイルをデータグリッドビューにバインドするために、パラメータ化されたクエリを使用しようとしています。列名は問題ありませんが、内容は空です。

この問題を解決するにはどうすればよいですか?

4

3 に答える 3

2

私のテスト プログラムでは、ds.Tables[0].Rows.Count データ テーブルには実際には 1 行が返されました (クエリ自体に一致するテスト データベースに 1 行があったため)。この行に区切りを入れると、最初にデータがデータテーブルに入っているかどうかを確認できるはずです。これを試して:

dataGridView1.DataSource = ds.Tables[0];

dataGridView1 のフロント エンド バインディングはどのように見えますか? Access でクエリを実行すると、状況も明らかになる可能性があります。

于 2012-08-21T04:17:57.560 に答える
0

パラメータで列サイズを指定せずに試してください。

cmd.Parameters.Add("?", OleDbType.Integer).Value = 1234;
cmd.Parameters.Add("?", OleDbType.BSTR).Value ="asdf";
于 2012-08-21T05:51:22.247 に答える