我有这个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行是过分的。但它应该起作用。