2013-04-24 46 views
0

我有一個使用OleDbCommand運行大量查詢的應用程序。每個查詢都是普通的SQL文本,並且該命令不使用參數。OleDbCommand和Unicode字符

現在,應用程序應該支持中文字符,我不想通過在要指定的字符串前添加N字符來更改每個查詢。

我試圖做這樣的事情,但它不工作:

 OleDbCommand command = new OleDbCommand("?", connect); 
     command.CommandType = CommandType.Text; 
     command.Parameters.AddWithValue("query", qry); 
     OleDbDataAdapter da = new OleDbDataAdapter(command); 

其中QRY是查詢,而無需N個字符在每個字符串的前執行。

我真的不會改變每一個查詢,它會是一團糟。

您有解決方案嗎?

回答

0

您將需要設置參數的數據類型,可以使用Add overload或使用new創建參數,然後設置該屬性,然後將其添加到集合中。

下面是使用OLEDB數據類型:

http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbtype.aspx

VarWChar是unicode

如果您使用SqlServer的,那麼你可能要使用本機驅動程序,以便你可以得到的SQL數據類型,其中有一個更準確的匹配。

如果你想要交叉數據庫兼容性,那麼你可能會採取相反的方向,並使用System.Data.Common數據類型,DbType.XXX,ref http://msdn.microsoft.com/en-us/library/system.data.dbtype.aspx(或ODBC和它的類型枚舉,因爲MS表示它們正在分階段將OleDb作爲支持ODBC的技術)

+0

我不在我的查詢中使用參數。 – AngeloBad 2013-04-24 12:27:39

+0

然後你可能發佈了錯誤的源代碼,因爲這增加了一個參數:command.Parameters.AddWithValue(「query」,qry);它被命名爲查詢並具有qry的值。我沒有看到你在哪裏設置commandText。 – MatthewMartin 2013-04-24 14:58:21

+0

我發佈的代碼只是一個嘗試。我只有字面sql執行沒有參數。我必須執行命令「原樣」,我沒有可能設置參數來解決Unicode問題。所以我試圖將命令文本作爲參數處理,但它不起作用。 – AngeloBad 2013-04-24 15:45:48