2011-01-04 8 views
1

こんにちは、あらかじめ与えられたID(Premanentではなく)からデータベースからデータを読みたいと思っています。私は、次のコードを使用しています:Cのアクセスデータベースからデータを読み取る

 OleDbConnection co = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb"); 
     co.Open(); 
     **OleDbCommand cmd = new OleDbCommand("SELECT * FROM Category1 Where ID = '"+textBox1.Text+"'", co);** 
     OleDbDataReader reader = cmd.ExecuteReader(); 

     int i = 1; 
     while (reader.Read()) 
     { 
      ListViewItem li = new ListViewItem(i.ToString()); 
      li.SubItems.Add(reader.GetString(1)); 
      li.SubItems.Add(reader.GetString(2)); 
      li.SubItems.Add(reader.GetString(3)); 
      li.SubItems.Add(reader.GetString(4)); 
      listView1.Items.Add(li); 
      i++; 
     } 

を、それは私に太字コードの行にエラーメッセージを示しています。抽出条件式で

データ型の不一致を。

+0

は、整数または文字列IDです作業は非常に良い音SQL文にユーザーの入力または任意の変数を追加するときにパラメータを使用する必要がありますが アクセス?整数を一重引用符で囲まないでください。 – JeffO

答えて

3

IDフィールドは数字ですか?それを文字列と比較しています。それは問題の一部かもしれません。

+0

IDは文字列ではありません – Farid

+2

データ型の不一致は非常に強く示唆しています。 – Fionnuala

0

を他の人が言ったように:それは

string strDSN = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\Db1.accdb"; 
string strSQL = "SELECT * FROM Tbl1" ; 
// create Objects of ADOConnection and ADOCommand 
OleDbConnection myConn = new OleDbConnection(strDSN); 
OleDbDataAdapter myCmd = new OleDbDataAdapter(strSQL, myConn); 
myConn.Open(); 
DataSet dtSet = new DataSet(); 
myCmd.Fill(dtSet, "Tbl1"); 
DataTable dTable = dtSet.Tables[0]; 
foreach(DataRow dtRow in dTable.Rows) 
{ 
    listBox1.Items.Add(dtRow["id"].ToString()); 
    listBox2.Items.Add(dtRow["nm"].ToString()); 
    listBox3.Items.Add(dtRow["ag"].ToString()); 
} 
関連する問題