2012-07-23 82 views
1

我想寫RightOuterJoin查詢檢索訪問數據庫中的數據..我如何實現這個查詢c#? 我試圖像這樣如何使用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

你在使用LINQ嗎? – 2012-07-23 05:15:28

+0

No.Link正在使用數據表na? – 2012-07-23 05:22:52

+0

這意味着你正在使用內嵌查詢...我是對嗎? – 2012-07-23 05:23:56

回答

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] 

注:

  1. 既然你已經連接到Sample1.accdb,你不需要在表名前加上db文件的路徑。
  2. 對於包含空格的字段名稱(RET NO),請將字段名稱括在方括號中。
+0

nw我只使用這個語句,但我得到這個錯誤**在查詢表達式中的語法錯誤(缺少運算符)** – 2012-07-23 06:06:20

+0

no ..我正在得到結果.. – 2012-07-23 06:20:46

0

試試下面的代碼

select * from tblemp right join tblDept on tblemp.DeptId=tblDept.pkDeptId 

它是一樣的你在SQL SERVER中使用正確的連接。

相關問題