[英]Reading Data From Access Database in C#
您好想从给定ID(不是永久性)中读取数据库中的数据。 我正在使用以下代码:
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++;
}
但它在粗体代码行中显示了一条错误消息:
条件表达式中的数据类型不匹配。
ID字段是数字的吗? 您正在将其与字符串进行比较。 那可能是问题的一部分。
就像其他人说的:听起来很好
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());
}
就像其他人说的那样:听起来很像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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.