字段验证规则中的“喜欢”运算符不适用于 OLEDB 插入
Posted
技术标签:
【中文标题】字段验证规则中的“喜欢”运算符不适用于 OLEDB 插入【英文标题】:'Like' operator in field validation rule not working for OLEDB inserts 【发布时间】:2017-08-28 17:27:56 【问题描述】:首先,我不是程序员,我这样做是为了一个工作中的小项目(我是客户服务团队的负责人)。
我使用以下验证规则创建了一个 Access 数据库:Like "T######" 为了只接受我们的员工 ID(例如 T123456) 它在 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 表示由于验证规则而无法插入数据。
我尝试使用不同的通配符 (*),但它仍然不起作用。我在这里有什么明显的遗漏吗?
非常感谢您的帮助,祝您有美好的一天!
【问题讨论】:
你能包含错误信息吗? 您的代码存在SQL Injection 的风险。您应该使用带参数的准备好的查询。即使您只是为了好玩,它也很有用,因为它可以优雅地处理名称包含'
的情况。
@developer_117 添加了错误消息 :) 感谢您的快速回复!
您在代码中的哪个位置使用了LIKE
关键字和sql 通配符,例如%
%
@MethodMan 对不起,如果我不清楚,验证规则直接在 Access 中而不是在代码中。
【参考方案1】:
您遇到了 Access OLEDB 提供程序的限制。如果您切换到使用 System.Data.Odbc
和 Access ODBC 驱动程序,您的代码应该可以正常工作。
【讨论】:
与 ODBC 完美配合,谢谢!我用connectionstrings.com/microsoft-access-accdb-odbc-driver/…【参考方案2】:很抱歉,我无法给您写评论。你的桌子上有一个验证规则。这意味着问题不在于您的查询,而在于您的表架构师。例如,您尝试插入的数据可能与您的字段的数据类型不匹配 见this for more info
【讨论】:
以上是关于字段验证规则中的“喜欢”运算符不适用于 OLEDB 插入的主要内容,如果未能解决你的问题,请参考以下文章
最小最大价格范围验证不适用于 jquery.validate.js
Azure Api 规则不适用于使用具有身份验证基本和身份验证证书的默认助手