パラメータ化されたクエリを使用する必要があり、クエリで一重引用符を使用する必要はありません。
using(OleDbConnection cn = new OleDbConnection(GetConnectionString()))
{
cn.Open();
string cmdText = "Insert into [" + excelApp.worksheetsList.ElementAt(0).Name + "$] " +
"([col1], [col2]) values (?, ?)";
OleDbCommand cmd = new OleDbCommand(cmdText, cn)
cmd.Parameters.AddWithValue("@p1", val1);
cmd.Parameters.AddWithValue("@p2", val2);
cmd.ExecuteNonQuery();
}
この例では、コマンドテキストは、パラメーター値のプレースホルダーを持つ単一の文字列で構成されています。次に、コマンドオブジェクトがその文字列を持つように宣言され、パラメーターのコレクションに2つのパラメーターが追加されます。それらは、値として渡された変数タイプに従って作成されます。したがって、val1とval2が文字列であり、一重引用符(アポストロフィ)が存在する場合、要求された挿入/削除/更新または選択操作用に自動的にフォーマットされます。