-1

我在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("!!!");" 的结果 然后我认为它不起作用:| 谢谢

ps我的db图片的 图片

4

1 回答 1

0

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

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

但是所有 RDBMS 配置都应该允许跨平台部署不区分大小写。这就是您从questionto的更改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 标识符和区分大小写 - MySQL

于 2013-08-18T12:04:04.707 回答