私は奇妙な問題を抱えています。MS Access から実行すると値をデータベースに完全に挿入するクエリを MS Access で作成しましたが、同じクエリを C# から実行すると、「検証テキスト」が OleDbException として表示され、挿入コマンドが失敗します。"Validation Rule" は " @ .*" です。この列には、"@" と "." が 1 つずつ含まれる電子メールが保存されます。その後。「Validation Rule」を外してC#からクエリを実行する場合は問題ありません。検証ルールが設定されている場合にのみ発生し、MS Access クエリの実行ではなく、C# からのみエラーが発生します。
コードとデータベースをhttp://www.2shared.com/file/XYmFD8Mg/Database_Validation.htmlにアップロードしました。
MS Access での SQL クエリ:
INSERT INTO EMail ( EMail, Company )
VALUES ('bbb@qwerty.com', 'Company');
コードは次のとおりです。
try
{
string dbPath = null;
if (File.Exists(Path.GetFullPath(@"..\..\..\Database.accdb")))
dbPath = Path.GetFullPath(@"..\..\..\Database.accdb");
dbConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + dbPath);
dbConnection.Open();
if (0 >= new System.Data.OleDb.OleDbCommand("INSERT INTO EMail ( EMail, Company ) VALUES ('bbb@qwerty.com', 'Company')", dbConnection).ExecuteNonQuery())
MessageBox.Show("Could not insert 'bbb@qwerty.com'. Check if already inserted.");
try { dbConnection.Close(); }
catch (Exception) { }
}
catch (Exception Ex)
{
try { dbConnection.Close(); }
catch (Exception) { }
MessageBox.Show(Ex.Message);
}
データベース スナップショット: