通过SqlBulkCopy保存UTF8字符串c#

c# nvarchar sql sqlbulkcopy utf-8

我有这个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

一般承认的答案

只是:

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

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

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

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




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因