在C#中从Access数据库读取数据

时间:2011-01-04 20:52:44

标签: c# ms-access ado.net

您希望从给定ID(不是Premanent)中读取数据库中的数据。我使用以下代码:

        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++;
        }

但它在粗体代码行中显示错误消息:

条件表达式中的数据类型不匹配。

3 个答案:

答案 0 :(得分:3)

ID字段是否为数字?您正在将它与字符串进行比较。这可能是问题的一部分。

答案 1 :(得分:0)

像其他人一样说:听起来非常像ID不是字符串。 但是,在向SQL语句添加用户输入或任何变量时,应使用参数:http://weblogs.sqlteam.com/jeffs/archive/2006/07/21/10728.aspx

OleDbCommand cmd = new OleDbCommand("SELECT * FROM Category1 WHERE id = @id", co);
cmd.Parameters.AddWithValue("@id", textBox1.Text);

答案 2 :(得分:0)

像其他人一样说:工作听起来很不错

x      zip     ch    new
1      1       2     0
2      2       1     -4
3      1       4     2