2011-08-05 5 views
0

私はOleDbConnectionを使ってデータをスプレッドシートに書き出しています。このデータのいくつかの列にはXML(XML内のデータではなく、XML自体)が含まれます。私はは、ExecuteNonQuery()を使用して挿入しようとすると、しかし、私は次のようOleDbException受け取る:プログラムでXMLをExcelワークシートに挿入するにはどうすればよいですか?

「『』」クエリ式で構文エラー(演算子がありません)を

は最近、私は

... 
command.CommandText = "INSERT INTO (Column1) VALUES(""<MyElement name="Name"/>"")"; 
のようなものなものを試してみましたこれを行うには

あたかも "名前"の引用符がすべてを投げ捨てているかのようです。

ご協力いただきありがとうございます。

答えて

0

引用符を引用符で表し、操作ではなく引用符で表すには、エスケープ文字を使用する必要があります。 C#にはエスケープ文字があり、SQLではエスケープ文字もあるので、扱いにくいかもしれません。

たとえば、C#で、渡すこと:引用符で囲まれた文字列 『(含む「リテラル文字列の文字を、あなたが使用する必要が

string quoted = "\"Quoted String\"";

引用符で囲まれた文字列を評価するにはを返します』 )

これにより、引用符をSQLコマンドに渡すことができますが、エスケープシーケンスを使用しない限り、SQLはこれらを引用符演算子として扱い、引用リテラルは扱いません。

""Quoted String""

ですから、SQL文でリテラルの一部として使用したいすべての引用文字のために、あなたは二回、文字を入力する必要があります。あなたのSQLの実装に 『"の文字が引用符の二重のセットである』エスケープシーケンスのために、このような何か使用してみてくださいと仮定すると、

:。

command.CommandText = "INSERT INTO (Column1) VALUES(\"<MyElement name=\"\"Name\"\"/>\")";

+0

おかげで、Nuzzoliloをトリックをしました。 – RobC

関連する問題