'Like'字段验证规则中的操作符不适用于OLEDB嵌入

问题描述:

首先,我不是程序员,我正在为一个小型项目(我是客户服务团队的负责人)获得乐趣。为了像“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://*.com/questions/601300/what-is-sql-injection)。您应该使用参数准备好的查询。即使你只是为了好玩而做这件事,它可能会很有用,因为它能够优雅地处理名称中包含'''的情况。 – litelite

+0

@ developer_117错误消息添加:)感谢您的快速回复! – djodars

您遇到了Access OLEDB提供程序的限制。如果切换到使用System.Data.Odbc和Access ODBC驱动程序,您的代码应该按预期工作。

+0

完美的工作与ODBC,谢谢! 我使用了https://www.connectionstrings.com/microsoft-access-accdb-odbc-driver/standard-security/ – djodars

对不起,我无法给你写评论。你的桌子上有一个验证规则。这意味着问题不在于您的查询,而在于您的桌面架构师。例如,它可能是,您尝试插入的数据与您的字段的数据类型不匹配 请参阅this for more info