我的SQL查询不起作用

时间:2013-08-18 11:06:33

标签: java mysql database select

我在java中有一个数据库问题

我的代码是(它只是我项目的一小部分)

    public void Read_from_DB(int exhibition_id){
            Statement stmt = null;
            Connection connect = null;

            try {
                connect=MYConnection.new_connection();
                stmt = connect.createStatement();
                QuestionCatalog.get_QuestionCatalog_instance().setShow_quest(new ArrayList<Question>());
                String  sql = "SELECT * FROM question WHERE Selection=0 AND exhibition_id="+exhibition_id;
                //System.out.println(sql);
                ResultSet rs = stmt.executeQuery(sql);
                System.out.println("!");
                System.out.println("->"+rs.getFetchSize());
                while(rs.next()){
                    Question jd=new Question();
                    System.out.println("!!!");
                    jd.setQuestion_id(rs.getInt("Question_id"));
                    jd.setQuestion(rs.getString("Question"));
                    jd.setQuestion(rs.getString(exhibition_id));
                    jd.getOption_2().setContent(rs.getString("Content2"));
        QuestionCatalog.get_QuestionCatalog_instance().getShow_quest().add(jd);
                    System.out.println("size"+QuestionCatalog.get_QuestionCatalog_instance().getShow_quest().size());
MYConnection.close_connection(stmt, connect);
                }
            }catch (Exception e) {
            }

        }

当我执行此代码时,它起作用了 我的数据库表名是“问题” 但是当我将此查询中的名称更改为“问题”时,不要收到任何错误 然后我认为它不执行我的查询,我的主要是

public static void main(String[] args) {
        DB_question d=new DB_question();
        d.Read_from_DB(1);
    }

和“MYConnection.new_connection();”部分代码返回一个连接,(我在另一个类中测试它工作)

控制台中的结果是:

SELECT * FROM Question WHERE Selection=0 AND exhibition_id=1
!
->0

它没有显示“!!!”,这是“System.out.println(”!!!“)的结果;” 那么我认为它不起作用:| 感谢

p.s我的数据库的图片 picture

1 个答案:

答案 0 :(得分:0)

我从您的问题中理解的是对表名或列名称的区分大小写的名称输出不正确。我对吗?

据我所知,SELECTFROM等保留字在所有OS'中都是不敏感的。在 *ix OS 环境中,所有其他用户定义的对象名称都区分大小写。但不是在 Windows OS 环境中。

但是所有RDBMS配置都应该允许跨平台部署的不区分大小写。这就是为什么从question更改为Question不会导致错误的原因。

关于查询结果
我担心您已经在不同的数据库或服务器上测试了您的查询。它们可能没有相同的数据,因此始终不会进入while( rs....循环。

更改您的代码,如下所示,看看输出是什么:

ResultSet rs = stmt.executeQuery(sql);  
System.out.println("!");  
System.out.println("->"+rs.getFetchSize());  

rs.beforeFirst();  
rs.last();  
int rowCount = rs.getRow();  
System.out.println( "---> rowCount: " + rowCount );  
rs.beforeFirst();  

while( ...  

另请参阅
DBMS Identifiers and Case Sensitivity - MysQL