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 '*人多*'********************

解决方案 »

  1.   


            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;
      

  2.   

      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你的? 缺少名字
      

  3.   

    我是想用LIKE 语句啊 在ACCESS里 查询可以 但是c#返回的就为空!!!!
      

  4.   

       在写使用access数据库的c#程序过程中,遇到各种莫名奇妙的问题。例如使用"like"进行模糊查询,在access查询视图中要使用"*"做模糊匹配(sql中是"%").   原以为在程序中的查询字符串也应该使用"*",事实上并非如此!   在access数据库中调试用"*",程序中要改过来用"%",否则是查询不到任何数据的,而且vs还不报任何错,调试都找不到原因。引至:https://www.cnblogs.com/bile/archive/2013/09/25/3338748.html