当尝试从C#中的访问数据库文件中读取时,我得到了一个
"标准表达式中的数据类型不匹配" - > system.data.oledb.oledbexception(0x80040e07)。
我尝试使用的代码是
public static void readHW(OleDbConnection connection, string article, string HWRev)
{
OleDbCommand ReadHW = new OleDbCommand($"SELECT * FROM [HW_Revision] WHERE [Article_ID] = {article} AND HW_Revision_ID = {HWRev}");
ReadHW.Connection = connection;
OleDbDataReader reader = null;
try
{
reader = ReadHW.ExecuteReader();
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
这是我早期的python代码与此SQL cmd
的匹配HW_RevrTest = cur.execute("""SELECT * FROM HW_Revision WHERE Article_ID = ? AND HW_Revision_ID = ?""", [Article, HWRev]).fetchall()
答案 0 :(得分:0)
已经有一段时间了,因为我已经确定了Access,但您似乎无法在任何时候将参数值传递给查询。解决这个问题,我希望它能够正常运作。
答案 1 :(得分:0)
您的python代码是参数化查询,其中数据库负责正确的参数使用。
但是这个:{article}
是(我假设)一个简单的变量替换,你最终得到像
WHERE [Article_ID] = asdf4711
对字符串无效。
你可以使用撇号
"SELECT * FROM [HW_Revision] WHERE [Article_ID] = '{article}' AND HW_Revision_ID = '{HWRev}'"
或更好:使用实际的parameterized OLEDB query。
答案 2 :(得分:0)
string query = "SELECT * FROM HW_Revision WHERE Article_ID =" + article + " AND HW_Revision_ID = " + HWRev;
var HW_RevrTest = cur.execute(query);