C# Oledb like 语句不返回任何结果
我正在制作一个简单的 asp.net/c# 应用程序,到目前为止,Oledb 的所有内容都工作得很好。 like 语句在 C# 中不起作用,它在 Access 中充当 SQL 查询。我还尝试仅使用 '*a*'
而不是 '*@uname*'
但它仍然没有返回任何内容。
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(
"SELECT accounts.ID, uname, firstname, lastname, description FROM accounts, profiles " +
"WHERE accounts.ID = profiles.ID AND uname like '*@uname*'", connection);
dataAdapter.SelectCommand.Parameters.Add("@uname", OleDbType.VarChar).Value = tbxFilter.Text;
I'm making a simple asp.net/c# application and everything with the Oledb worked just fine until now.
The like statement is just not working through c#, it worked as a SQL Query in Access. I also tried just using '*a*'
instead of '*@uname*'
but it still didn't return anything.
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(
"SELECT accounts.ID, uname, firstname, lastname, description FROM accounts, profiles " +
"WHERE accounts.ID = profiles.ID AND uname like '*@uname*'", connection);
dataAdapter.SelectCommand.Parameters.Add("@uname", OleDbType.VarChar).Value = tbxFilter.Text;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
问题是您没有使用正确的通配符。 Access 可以使用
*
或%
,但大多数其他仅使用%
The problem is that you're not using the correct wildcard character. Access can use either
*
or%
, but most other use only%
这样的东西在我的数据库中对我有用。
Something like this works for me in my DB.
好吧,从这里我可以看到一种快速修复它的方法:
然后你的参数应该像这样定义:
或者
旁注:如果我是你,我不会直接包含 tbxFilter.Text 。相反,你应该使用这个:
因为参数中的 ' 符号如果不加倍的话会损害你的 SQL 查询。要么对文本控件的处理程序执行此安全检查。
Well, from here I can see a fast way to fix it:
and then your parameter should be defined like this:
or
A side note: if I were you, I would not include the tbxFilter.Text directly. Instead, you should use this:
since a ' sign in your parameter will hurt your SQL query if not doubled. Either that or you perform this safety check on your text control's handlers.