如何使用 C# 在 access 数据库中实现“右外连接”查询?
Posted
技术标签:
【中文标题】如何使用 C# 在 access 数据库中实现“右外连接”查询?【英文标题】:How to implement "Right Outer Join" query in access database using C#? 【发布时间】:2012-07-23 05:12:46 【问题描述】:我想编写 RightOuterJoin 查询以从 access 数据库中检索数据。如何在 c# 中实现此查询? 我试过这样
connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=Sample1.accdb; Jet OLEDB:Engine Type=5";
string sql = "SELECT t1.mobileno,t1.RetailerNo,t1.custcode,t2.RET NO FROM [C:\\Sample1.accdb].[Table1] as t1 RIGHT OUTER JOIN [C:\\Sample1.accdb].[Table2] as t2 ON t1.RetailerNo = t2.RET NO";
database = new OleDbConnection(connectionString);
database.Open();
OleDbCommand cmd1 = new OleDbCommand(sql, database);
OleDbDataAdapter da = new OleDbDataAdapter(cmd1);
//database.Open();
//conn.Open();
cmd1.ExecuteNonQuery();
System.Data.DataTable dt = new System.Data.DataTable();
da.Fill(dt);
【问题讨论】:
No.Link 用于数据表 na? 这意味着您正在使用内联查询...我说的对吗?? 我试过这样..chk我的代码 【参考方案1】:我认为您的连接字符串可能有问题。它使用 Jet 提供程序,但数据库类型是较新的 ACCDB 格式。 Jet 不适用于 ACCDB。
对于 ACCDB,您需要 ACE 提供程序。如果您没有安装 Office 2007 或 2010,您可以下载并安装Access Database Engine Redistributable。
这是来自工作连接字符串的提供程序部分:
Provider=Microsoft.ACE.OLEDB.12.0
有关详细信息,请参阅Connection strings for Access 2007。
一旦您与Sample1.accdb
建立了有效连接,请将您的 SQL 语句修改为:
SELECT t1.mobileno,t1.RetailerNo,t1.custcode,t2.[RET NO]
FROM
Table1 as t1
RIGHT JOIN Table2 as t2
ON t1.RetailerNo = t2.[RET NO]
注意事项:
-
由于您已经连接到
Sample1.accdb
,因此您无需在表名前加上 db 文件的路径。
对于包含空格 (RET NO) 的字段名称,请将字段名称括在方括号中。
【讨论】:
nw 我只使用此语句,但我收到此错误**查询表达式中的语法错误(缺少运算符)**【参考方案2】:试试下面的代码
select * from tblemp right join tblDept on tblemp.DeptId=tblDept.pkDeptId
这和你在 SQL SERVER 中使用 right join 是一样的。
【讨论】:
以上是关于如何使用 C# 在 access 数据库中实现“右外连接”查询?的主要内容,如果未能解决你的问题,请参考以下文章