首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于JavaWeb的全JavaWeb数据库关键词搜索推荐方法

基于JavaWeb的全JavaWeb数据库关键词搜索推荐方法
EN

Stack Overflow用户
提问于 2021-01-23 11:34:53
回答 1查看 87关注 0票数 0

我正试图通过JSP从我的整个keyword search数据库中实现一个MySQL,我很困惑我选择的方法是否效率低下:

我读过关于information_schema的文章,发现所有的列标签都在那里。

我尝试了下面的SQL语句来生成所有可能的查询:

代码语言:javascript
复制
SELECT CONCAT('SELECT * FROM ',table_schema,'.',table_name,
            ' WHERE ',column_name,' LIKE ','searchString',';')
      FROM information_schema.columns
      WHERE table_schema NOT IN ('information_schema','mysql','performance_schema')
      AND (column_type LIKE 'char(%'
      OR column_type LIKE 'varchar(%'
      OR column_type LIKE '%text')

并尝试了JSP代码以获得所有可能的数据匹配。

代码语言:javascript
复制
<%
    String searchString =   "malayalam";
            searchString        =   "''%"+searchString+"%'' ";    
            ArrayList<String> queries =   new ArrayList<String>();
            String sql="SELECT CONCAT('SELECT * FROM ',table_schema,'.',table_name,"
                + "' WHERE ',column_name,' LIKE ','"+searchString+"',';')"
                + "FROM information_schema.columns "
                + "WHERE table_schema NOT IN ('information_schema','mysql','performance_schema')"
                + "AND (column_type LIKE 'char(%'"
                + "OR column_type LIKE 'varchar(%'"
                + "OR column_type LIKE '%text')";
            try{
                DBConInfoSchema db =   new DBConInfoSchema();
                ResultSet rs    =   db.getData(sql);
                while(rs.next()){
                    queries.add(rs.getString(1));
                }
                for(int i=0;i<queries.size();i++){
                    DBConInfoSchema dCon    =   new DBConInfoSchema();
                    ResultSet rsDemo        =   dCon.getData(queries.get(i));
                    if(rsDemo.next()){
                        out.print("<br/>Data found n query-"+i+" ->     "+queries.get(i));
                    }
                    dCon.DBClose();
                }
            }catch(Exception w){
                out.print("excep<br/>"+w);
            }
%>

现在我得到了大量的查询列表。我很困惑它是好是坏?!在考虑效率的时候,这种方法是不是不好呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-19 10:05:38

在查询生成部分中。

代码语言:javascript
复制
SELECT CONCAT('SELECT * FROM ',table_schema,'.',table_name,
            ' WHERE ',column_name,' LIKE ','searchString',';')
      FROM information_schema.columns
      WHERE table_schema NOT IN ('information_schema','mysql','performance_schema')
      AND (column_type LIKE 'char(%'
      OR column_type LIKE 'varchar(%'
      OR column_type LIKE '%text')

我已经更新了线路

代码语言:javascript
复制
WHERE table_schema NOT IN ('information_schema','mysql','performance_schema')

代码语言:javascript
复制
 WHERE table_schema IN ('<my_table_name>')

生成my_table_name中的所有搜索结果并保存到ArrayList并执行它们

代码语言:javascript
复制
ArrayList<String> queries =   new ArrayList<String>();
DBConInfoSchema db =   new DBConInfoSchema();
ResultSet rs    =   db.getData(sql_statement);
while(rs.next()){
  queries.add(rs.getString(1));
}

从那里我整理出所需的数据。

-Hope,这可能会对某些人有所帮助。

注:即使它对我有用,我仍然相信它的天真,纠正我,如果有更好的方法,你做到这一点

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65858718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档