c# 如何传递 ACCESS LIKE语句的OleDbParameter 参数?

lkf181 2019-08-06 01:50:21


public IEnumerable<Model_Shortcuts> ListWhereLIKE_ExplainContent(string pWhereExplainORContent)
{
List<Model_Shortcuts> list = new List<Model_Shortcuts>();
this.DataGridViewRowsIndex = 0;
string strsql = @"SELECT Shortcuts_ID,Code,Explain,Content,Images,Shortcuts_MenuTitleForeignKey,Shortcuts_CategoryForeignKey FROM Shortcuts
WHERE Explain LIKE ? OR Content LIKE ?";

OleDbParameter[] parms = { new OleDbParameter("?",OleDbType.LongVarWChar),new OleDbParameter("?",OleDbType.LongVarWChar) };
parms[0].Value = "'*"+pWhereExplainORContent+"*'";
parms[1].Value = "'*"+pWhereExplainORContent+"*'";


DataTable dt = db.ExecuteDataTable(strsql, parms);
foreach (DataRow row in dt.Rows) { list.Add(ToModel(row)); }
return list;
}


我想传递的语句是:
SELECT Shortcuts_ID,Code,Explain,Content,Images,Shortcuts_MenuTitleForeignKey,Shortcuts_CategoryForeignKey FROM Shortcuts WHERE Explain LIKE '*人多*' OR Content LIKE '*人多*'

********************
...全文
374 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
XBodhi. 2019-08-14
  • 打赏
  • 举报
回复
不是写给你了吗
lkf181 2019-08-14
  • 打赏
  • 举报
回复
在写使用access数据库的c#程序过程中,遇到各种莫名奇妙的问题。例如使用"like"进行模糊查询,在access查询视图中要使用"*"做模糊匹配(sql中是"%"). 原以为在程序中的查询字符串也应该使用"*",事实上并非如此! 在access数据库中调试用"*",程序中要改过来用"%",否则是查询不到任何数据的,而且vs还不报任何错,调试都找不到原因。 引至:https://www.cnblogs.com/bile/archive/2013/09/25/3338748.html
lkf181 2019-08-07
  • 打赏
  • 举报
回复
我是想用LIKE 语句啊 在ACCESS里 查询可以 但是c#返回的就为空!!!!
XBodhi. 2019-08-06
  • 打赏
  • 举报
回复
OleDbParameter[] parms = { new OleDbParameter("?",OleDbType.LongVarWChar),new OleDbParameter("?",OleDbType.LongVarWChar) };
parms[0].Value = "'*"+pWhereExplainORContent+"*'";
parms[1].Value = "'*"+pWhereExplainORContent+"*'";

你为什么要这么写

如果你确定你是 * 开头和结尾是可以但是参数名字你写对

例如

SELECT * FROM WHERE NAME=?NAEM AND PASSWORD=?PASSWORD

你的? 缺少名字
吴太乙 2019-08-06
  • 打赏
  • 举报
回复
提示什么错误贴出来啊
lkf181 2019-08-06
  • 打赏
  • 举报
回复

        public DataTable ExecuteDataTable(string cmdText, params OleDbParameter[] paras)
        {
            using (OleDbConnection con = new OleDbConnection(strcon))
            {
                con.Open();
                using (OleDbCommand cmd = con.CreateCommand())
                {
                    cmd.CommandText = cmdText;
                    if (paras != null)
                    {
                        cmd.Parameters.AddRange(paras);
                    }

                    DataTable dt = new DataTable();
                    OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
                    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                    adapter.Fill(dt);
                    cmd.Parameters.Clear();
                    return dt;
                }
            }
        }
//奇怪的是  我用纯字符串拼接 也不行!!!!!!!

            string strsql = @"SELECT Shortcuts_ID,Code,Explain,Content,Images,Shortcuts_MenuTitleForeignKey,Shortcuts_CategoryForeignKey FROM Shortcuts WHERE Explain  LIKE '*"+pWhereExplainORContent+"*' OR Content LIKE '*"+pWhereExplainORContent+"*'";



            DataTable dt = db.ExecuteDataTable(strsql, null);
            foreach (DataRow row in dt.Rows) { list.Add(ToModel(row)); }

            return list;

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧