2017-08-28 61 views
1

首先,我不是程序員,我正在爲一個小型項目(我是客戶服務團隊的負責人)獲得樂趣。爲了像「T ######」 只接受我們的員工ID(如T123456) 它工作正常訪問:'Like'字段驗證規則中的操作符不適用於OLEDB嵌入

我創建了下面的驗證規則的Access數據庫。

然而,在C#中,我有以下的代碼對我的提交按鈕:

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說它無法插入因爲驗證的數據規則。

我試着用不同的通配符(*),但它仍然不起作用。有什麼明顯的我在這裏失蹤?

非常感謝您的幫助,祝您有個美好的一天!

+0

您能否包含錯誤消息? –

+3

您的代碼存在[SQL注入]風險(https://stackoverflow.com/questions/601300/what-is-sql-injection)。您應該使用參數準備好的查詢。即使你只是爲了好玩而做這件事,它可能會很有用,因爲它能夠優雅地處理名稱中包含'''的情況。 – litelite

+0

@ developer_117錯誤消息添加:)感謝您的快速回復! – djodars

回答

1

您遇到了Access 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