通过SqlBulkCopy保存UTF8字符串c#

时间:2012-07-10 10:45:49

标签: c# sql utf-8 sqlbulkcopy nvarchar

我有这个Sql查询:

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

我希望通过SqlBulkCopy来执行它:

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

1 个答案:

答案 0 :(得分:1)

只需:

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

只有在TSQL中文字才需要N'...';但由于您正在使用数据(而不是TSQL),因此您无需担心这一点。在SqlBulkCopy的情况下,它将以原始格式下载到服务器,而不是直接作为TSQL。

在更常见的适配器或ORM的情况下,库将(很可能)使用参数,或者它会担心自己的转义。

或许还应该注意,通过SqlBulkCopy添加1行是过度的。但它应该有用。