2012-07-10 90 views
1

我有這樣的SQL查詢:保存UTF8字符串由SqlBulkCopy的C#

INSERT INTO myTable (myField) VALUES (N'Thermal Oxide: 0 Å to 40 μm') 

,我想通過使用SqlBulkCopy像那樣exeute它:

DataTable myDataTable=myDb.getData("select top 1* from myTable").Clone(); 
DataRow dr = myDataTable.NewRow(); 
dr["myField"] ="N'Thermal Oxide: 0 Å to 40μm'"; 
myDataTable.Rows.Add(dr); 
this.openCon(); 
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(con)) { 
    bulkCopy.DestinationTableName = dt.TableName; 
    bulkCopy.BulkCopyTimeout = 100; 
    bulkCopy.WriteToServer(myDataTable); 
} this.closeCon(); 

是工作完美,但我的問題是:我可以在哪裏啓動'N'前綴?也許沒有必要?

感謝, chani

+2

有沒有必要,你是對的。類型轉換由ADO.Net驅動程序處理。 – 2012-07-10 10:58:02

回答

1

剛:

dr["myField"] = "Thermal Oxide: 0 Å to 40μm"; 

N'...'只需要文字在TSQL;但由於你正在採取數據(而不是TSQL),你不需要擔心。在SqlBulkCopy的情況下,它將以原始格式下載到服務器,而不是直接作爲TSQL。

在更常見的適配器或ORM情況下,庫(或許很可能)會使用參數,否則它會擔心自身溢出。

也許還應該指出,通過SqlBulkCopy增加1行是矯枉過正。但它應該工作。