gpt4 book ai didi

c# - 在 C# 中查询 Access '07 数据库的问题

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

作为学习的一部分,我正在学习 .NET 单元。我才刚刚开始,一位讲师未能为我提供最坚实的 .NET 基础,所以请原谅我的笨拙。

我正在制作一个非常简单且通用的数据库驱动应用程序。我正在使用 C# 并正在 Access Microsoft Access 2007 数据库。

我已经将类似数据库的东西放在它自己的类中,方法只是吐出我用于提交的 OleDbDataAdapters。我从主程序中提供任何执行查询 DataSet 对象的方法,这是我保存数据的地方(数据库中的多个表)。

我创建了一个非常通用的私有(private)方法,我用它来执行 SQL SELECT 查询,并有一些公共(public)方法包装该方法以获取产品、订单等(它是一个通用的零售数据库)。

泛型方法使用单独的 Connect 方法来实际建立连接,如下所示:

private static OleDbConnection Connect()
{
OleDbConnection conn = new OleDbConnection(
@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Temp\db.accdb");
return conn;
}

泛型方法如下:

private static OleDbDataAdapter GenericSelectQuery(
DataSet ds, string namedTable, String selectString)
{
OleDbCommand oleCommand = new OleDbCommand();
OleDbConnection conn = Connect();
oleCommand.CommandText = selectString;
oleCommand.Connection = conn;
oleCommand.CommandType = CommandType.Text;

OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = oleCommand;
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
adapter.Fill(ds, namedTable);

return adapter;
}

包装器方法只是传递它们从主程序接收到的数据集,namedtable 字符串是数据集中表的名称,您传递要进行的查询。

无论我给出哪个查询(即使是像 SELECT * FROM TableName 这样简单的查询)我仍然会抛出一个 OleDbException,说明查询的 FROM 子句有错误。我刚刚求助于使用 Access 构建查询,但仍然没有用。显然我的代码有问题,这实际上不会让我感到惊讶。

这是我正在使用的一些包装器方法。

public static OleDbDataAdapter GetOrderLines(DataSet ds)
{
OleDbDataAdapter adapter = GenericSelectQuery(
ds, "orderlines", "SELECT OrderLine.* FROM OrderLine;");
return adapter;
}

它们看起来都一样,只是 SQL 发生了变化。

最佳答案

您是否尝试过更简单的方法来查看是否可以连接到您正在寻找的表。有点像

  DataSet ds = new DataSet();
using (OleDbConnection myConnection = new OleDbConnection
(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Temp\db.accdb"))
{
myConnection.Open();
OleDbDataAdapter myAdapter = new OleDbDataAdapter("SELECT OrderLine.* FROM OrderLine;, myConnection);
myAdapter.TableMappings.Add("Table", "TestTable");
myAdapter.Fill(ds);
}

然后从那里检查东西是否在 ds 中

  ds.Tables[0].Rows.Count()

这实际上会显示您是否正在 Access DB 并获得结果。从那里你可以让它更优雅

关于c# - 在 C# 中查询 Access '07 数据库的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9901588/

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