2017-08-28 5 views
1

まず、私はプログラマーではなく、仕事中の小さなプロジェクト(私は顧客サービスのチームリーダー)のためにこれをやっています。 OLEDBインサートでフィールド検証ルールの 'Like'演算子が機能しない

は、私は次の検証ルールでAccessデータベースを作成しました:「Tの######」 同様の順序でのみ、当社の従業員ID(例えばT123456)これは、Accessで正常に動作 を受け入れるに。

private void btnSubmit_Click(object sender, RoutedEventArgs e) 
    { 
     try 
     { 
      connection.Open(); 
      OleDbCommand command = new OleDbCommand(); 
      command.Connection = connection; 
      command.CommandText = "insert into Employees (ID, LastName, FirstName) values ('" + txtTID.Text + "','" + txtLastName.Text + "','" + txtFirstName.Text + "')"; 

      command.ExecuteNonQuery(); 
      connection.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("" + ex); 
      connection.Close(); 
     } 

    } 

私は上記exampleのようなものを入力するたびに、私はError Messageはそれがあるため、検証のデータを挿入することができませんでしたと言っ取得:

しかし、C#で、私は私の送信ボタンに次のコードを持っていますルール。

私は別のワイルドカード(*)で試しましたが、それでも動作しません。私がここで紛失していることは明らかですか?

ご協力いただきありがとうございました。素晴らしい一日をお過ごしください。

+0

エラーメッセージを挿入できますか? –

+3

コードは[SQL Injection](https://stackoverflow.com/questions/601300/what-is-sql-injection)の危険性があります。パラメータ付きの準備済みクエリを使用する必要があります。あなたが名前だけに ''が含まれている場合を優雅に処理するので、あなたが楽しいためにやっているとしても便利です。 – litelite

+0

@ developer_117エラーメッセージが追加されました:)クイック返信ありがとうございます! – djodars

答えて

1

アクセスOLEDBプロバイダの制限に遭遇しました。 System.Data.OdbcとAccess ODBCドライバを使用するように切り替えると、コードが正常に動作するはずです。

+0

ODBCに完全に勤務しました、ありがとう! https://www.connectionstrings.com/microsoft-access-accdb-odbc-driver/standard-security/を使用しました – djodars

0

ご迷惑をおかけして申し訳ございません。テーブルには検証ルールがあります。つまり、問題はクエリではなく、テーブルアーキテクトにあります。たとえば、挿入しようとしているデータがフィールドのデータ型と一致しない 参照this for more info

関連する問題