1

我有这个 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”前缀?也许没有必要?

谢谢,陈

4

1 回答 1

1

只是:

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

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

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

也许还应该注意,添加 1 行过孔SqlBulkCopy是多余的。但它应该工作。

于 2012-07-10T11:19:40.377 回答