通过SqlBulkCopy c#保存UTF8字符串



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

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

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

也许还应该注意的是,通过SqlBulkCopy添加1行是过分的。但它应该起作用。

最新更新