2011-09-25 31 views
6

我有一個插入查詢要在C#中針對SQL Server數據庫執行。Unicode SQL查詢W /參數改爲N前綴

我插入的列是nvarchar類型。

我插入該欄的數據是非英文的。

我用AddWithValue傳遞非英文數據到服務器是否足夠?像這個例子:

string dogName = "עברית"; 
using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    connection.Open(); 
    using (SqlCommand command = new SqlCommand("INSERT INTO Dogs1(Name) VALUES @Name", connection)) 
    { 
    command.Parameters.AddWithValue("Name", dogName); 
    command.ExecuteNonQuery(); 
    } 
} 

或者我必須使用N前綴來聲明它的Unicode?就像它說的那樣here

回答

3

如果我正確理解問題,可以明確地將SqlCommand參數設置爲特定的數據類型。您將可以將其設置爲nvarchar如通過下面的鏈接:http://msdn.microsoft.com/en-us/library/yy6y35y8.aspx

這下面的代碼片段直接取自MSDN:

SqlParameter parameter = new SqlParameter(); 
parameter.ParameterName = "@CategoryName"; 
parameter.SqlDbType = SqlDbType.NVarChar; 
parameter.Direction = ParameterDirection.Input; 
parameter.Value = categoryName; 

它使用一個明確創建SqlParameter的實例,但是它是索引SqlCommand實例的SqlParameterCollection也是同樣的想法。

+0

這是很好的知道,但我必須爲每個參數進入所有這些麻煩?所有這些額外的工作降低了代碼的可讀性,如果可以的話,我真的希望沒有它。 – kroiz

4

我相信底部的鏈接只是在SQL本身內真正談論值

據我所知,你得到的代碼應該是絕對好的 - 否則就沒有辦法指定Unicode文本。

當然,這可能是值得驗證的 - 但如果它不起作用,我會非常驚訝。

+0

請看我的答案。我同意,它可能會作爲一個'字符串'會隱式地是nvarchar,但有一種方法來明確調用什麼數據類型。 – 2011-09-26 00:22:42