【发布时间】:2011-05-05 15:35:38
【问题描述】:
我正在使用 C# OleDB 连接从访问数据库中读取数据。我不想要任何长度少于三个字符的结果。
我当前的代码显示“无效的模式字符串”错误。为什么会出现此错误,我该如何解决?
string qry = "Select * from Table1 where ((CALLNO not like '') and " +
"((CALLNO like '%" + suggestedCallNo + "%') or ('" + suggestedCallNo + "' like '%' & CALLNO & '%')) and " +
"((Len(CALLNO))>=3))";
OleDbCommand myCommand = new OleDbCommand(qry, myConnection);
OleDbDataReader myReader = myCommand.ExecuteReader();
如果没有((Len(CALLNO))>=3),此代码可以正常工作。但是,一旦我添加了该行,一旦执行阅读器,我就会得到一个 "Invalid pattern string" 异常。
我尝试了一些事情:
而不是((Len(CALLNO))>=3) 使用(CALLNO not like ''),这不会导致任何错误,所以我不会缺少括号。
尝试使用像'_'、'_ _'、'_ _ _' 这样的单字符通配符,所以我使用了((Len(CALLNO))>=3) 而不是(CALLNO not like '_'),这会导致相同的“无效模式字符串”错误.事实上,我发现唯一不会引发错误的是空字符串 '' 和完整的通配符 '%'。
我还直接在 access 中从查询字符串运行查询,我没有收到任何类型的错误。
感谢您提供任何信息,
LMB
【问题讨论】:
-
你连接的是什么数据源?
-
我正在连接访问数据库表:OleDbConnection myConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source = C:\output.mdb")
标签: c# ms-access oledb oledbcommand oledbdatareader