Microsoft Office Access数据库包含表,查询,表单和报表。
是否可以从C#在Access数据库中构建和保存查询?
例如,我知道我可以使用OLEDB连接到Access数据库并使用SQL命令使用其表和已定义的查询,但是如何构建新查询然后将其保存在数据库中?
答案 0 :(得分:3)
如果要将Querydefinitons添加到现有的访问数据库,可以使用Access Interop asssembly来执行此操作。
创建一个新的c#项目并添加对:
的引用Microsoft Office 12.0 Access数据库引擎对象库
(或与您的Office / Access版本匹配的版本)
此代码在Access数据库中为数据库中的每个表创建一个Query,以查询行数:
var dbe = new DBEngine();
var db = dbe.OpenDatabase(@"c:\path\to\your\youraccessdatabase.accdb");
// loop over tables
foreach (TableDef t in db.TableDefs)
{
// create a querydef
var qd = new QueryDef();
qd.Name = String.Format("Count for {0}", t.Name);
qd.SQL = String.Format("SELECT count(*) FROM {0}", t.Name);
//append the querydef (it will be parsed!)
// might throw if sql is incorrect
db.QueryDefs.Append(qd);
}
db.Close();