我想编写 RightOuterJoin 查询以从访问数据库中检索数据。如何在 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);
答案 0 :(得分: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文件的路径。答案 1 :(得分:0)
我希望此链接能更好地向您解释 http://blogs.msdn.com/b/vbteam/archive/2008/01/31/converting-sql-to-linq-part-8-left-right-outer-join-bill-horst.aspx
感谢
答案 2 :(得分:0)
尝试以下代码
select * from tblemp right join tblDept on tblemp.DeptId=tblDept.pkDeptId
它与在SQL SERVER中使用右连接相同。