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";

これは、TSQLのリテラルN'...'にのみ必要です。ただし、 (TSQLではなく)データを取得しているので、それについて心配する必要はありません。の場合、TSQLとして直接ではなく、raw形式でサーバーに送信されます。SqlBulkCopy

アダプターまたはORMのより一般的なケースでは、ライブラリーは(ほとんどの場合)パラメーターを使用するか、それ自体がエスケープすることを心配します。

SqlBulkCopyおそらく、viaを1行追加するのはやり過ぎであることに注意する必要があります。しかし、それは機能するはずです。

于 2012-07-10T11:19:40.377 に答える