2012-02-13 70 views
0

我正在做一個OleDb.OleDbDataAdaptor對象來填充一個DataTable對象。在OleDbDataAdaptor的建設,我初始化這樣的:MDB表列與Unicode失敗?

Dim adapter As New OleDb.OleDbDataAdapter(sql, myConnection) 

其中SQL是我的查詢字符串這樣的:

Dim sql = "SELECT * FROM DBTable TC WHERE TC.Text=N'Criteria'" 

我現在用的是前面的大寫字母N,因爲該領域「文本」中表「DBTable」應該是unicode。 而myConnection表示一個連接到我的mdb文件之一,DBTable已定義。

但是,當我執行adaptor.Fill(myDataTable)時,它會失敗並引發異常:查詢表達式'TC.Text = N'Criteria'中的語法錯誤(缺少運算符)。有誰知道這裏發生了什麼?我瞭解到,爲了處理unicode文本,N是必需的。另一個問題是,我如何確保mdb文件中的字段確實是unicode?因爲我只能看到字段數據類型是「文本」,而我正在使用Access 2003,所以我只能假設它是unicode。事實上,我正在爲字段啓用unicode壓縮,正如您在文本「標準」中看到的那樣,無論如何都沒有特殊字符。

感謝您的幫助!

+0

@Remou感謝但C#不是我正在使用的。我正在使用VB.NET,這是Dim來自的地方。這部分代碼不是來自MS Access應用程序,除非它試圖連接到.mdb數據庫。但是我的感覺是否正確,與SQL Server不同,沒有必要具有訪問mdb unicode文本的大寫字母N?因爲類似的代碼的確適用於SQL Server數據庫,但只能通過訪問數據庫失敗 – tete 2012-02-14 06:55:04

+0

請參閱http://stackoverflow.com/questions/6040671/using-n-in-select-query-gives-syntax-error – Fionnuala 2012-02-14 11:34:09

+0

@Remou謝謝!我想這個想法對於Access來說不應該把大寫字母N放在字符串前,否則會給出提到的錯誤。我們的程序對Access數據庫和SQL Server數據庫使用相同的例程,這就是爲什麼SQL Server的例程不適用於Access數據庫的原因。 – tete 2012-02-14 11:58:51

回答

0

基於@Remou響應,事實證明,對於Access數據庫,unicode文本不需要前置大寫N. N僅適用於SQL Server DB