C#から実行されるSQL Serverクエリにファイルパスを含める場合。ファイルパスは、開いているファイルダイアログによって提供されたtextBoxから取得されます。 SQL Serverクエリは、次の文字列に含まれています。実行時にSQL Serverへのファイルパスをパーズする方法
実行時にstring strSqlAcctSelect = String.Format("SELECT Code AS dhAccountType,
Name as dhAcctName
INTO {0} " + "FROM OPENROWSET('Microsoft.Ace.OLEDB.12.0', 'Excel 8.0; DATABASE =
{1}', 'SELECT * FROM " + "[Sheet1$]')", strAcctTabName, this.textBoxAcctPath.Text);
:
this.textBoxAcctPath.Text = "J:\\CCCDataVic\\RMH\\PE1006Data\\DHCC.xls";
この文字列はもちろんの画面に戻って解析されると、ファイルパス文字列は、それが必要となります。「J :\ CCCDataVic \ RMH \ PE1006Data \ DHCC.xls 'と入力します。
問題はこれです。クエリーを解析せずにリテラル "\"(シングルバックスラッシュ)を使用してC#でSQLクエリーにパスを含む文字列を挿入するにはどうすればいいですか?スラッシュ)?
あなたが何をしても、SQLは好きではない二重バックスラッシュを含むSQLに解析されます。
「どのSQLが好きでないか」を定義します。 SQLは二重バックスラッシュのようになります;-))))) – zerkms
これは解決策ではありませんが、代わりに "/"を使用することができます。 – dawebber
それ以外の場合は、これを逐語的な文字列リテラルとして扱うことをお勧めします: 'this.textBoxAcctPath.Text = @" J:\ CCCDataVic \ RMH \ PE1006Data \ DHCC.xls "; ' これはもちろん、文字列の値が先頭に指定されます。 – dawebber