如何使用 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 数据库中实现“右外连接”查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Access 2003 中实现版本控制?

如何在 SQL for MS Access 中实现分页?

c#中实现用户注册到数据库,怎么做?

如何在 SQL for MS Access 中实现分页?

在 C# 中实现 runas

如何在 Access 2007 的窗体中实现点击按钮打开另一个窗体???