gpt4 book ai didi

c# - MS Access 查询 "WHERE"异常

转载 作者:搜寻专家 更新时间:2023-10-30 21:43:06 27 4
gpt4 key购买 nike

我正在用 C# 编写一个应用程序,它使用 System.Data.OleDb 命名空间从 .mdb 文件中读取信息。我正在阅读的表格包含有关样本的信息(编号、索引、日期等)。数字和日期是在表中添加新项目时的必填项,但索引是可选的,因此有些样本没有索引。我可以使用以下代码运行查询:

string id = "99";
OleDbConnection myConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\...\Database\data.mdb");
myConnection.Open();
OleDbCommand myCommand = myConnection.CreateCommand();
myCommand.CommandText = "SELECT SampNo, Index, DateTime FROM Sample WHERE SampNo=" + id;
OleDbDataReader myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
Console.WriteLine("\t{0}\t{1}\t{2}", myReader["SampRef"], myReader["Index"], myReader["DateTime"]);
}

但是,我实际上想查询表并根据索引值检索样本,因此我尝试通过将查询行替换为:

myCommand.CommandText = "SELECT SampNo, Index, DateTime FROM Sample WHERE Index=" + id;

但是当我运行它时,它会在“myCommand.ExecuteReader()”行中抛出一个 OleDbException,提示“标准表达式中的数据类型不匹配”。

我对数据库查询不是很流利,所以我假设还有另一种方法可以运行此查询。有什么想法吗??

最佳答案

Index 字段是数字字段还是文本字段?

如果它是一个文本字段,您需要这样做:

myCommand.CommandText = "SELECT SampNo, Index, DateTime FROM Sample WHERE Index='" + id + "'";

不过,您最好还是使用参数化查询,因为这会使您面临包含撇号的索引问题,甚至更糟的是注入(inject)攻击。

关于c# - MS Access 查询 "WHERE"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3788601/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com