У меня есть этот запрос 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 библиотека будет либо (наиболее вероятно) использовать параметры, либо будет беспокоиться об эвакуации.
Возможно, также следует отметить, что добавление 1 строки через SqlBulkCopy
является излишним. Но это должно сработать.