我有这个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
答案 0 :(得分:1)
只需:
dr["myField"] = "Thermal Oxide: 0 Å to 40μm";
只有在TSQL中文字才需要N'...'
;但由于您正在使用数据(而不是TSQL),因此您无需担心这一点。在SqlBulkCopy
的情况下,它将以原始格式下载到服务器,而不是直接作为TSQL。
在更常见的适配器或ORM的情况下,库将(很可能)使用参数,或者它会担心自己的转义。
或许还应该注意,通过SqlBulkCopy
添加1行是过度的。但它应该有用。