2013-08-18 3 views
-1

у меня есть одна проблема с базой данных в Javaмой SQL запрос не работает

мой код (его только одна небольшая часть моего проекта)

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

+0

Попробуйте пропусканием выше запрос непосредственно в БД. Какой результат вы получаете? –

+0

какая у вас ошибка? –

+0

@Marty McVry: ничего, я говорю, что результат sysout в моем основном, в моей базе данных ничего не происходит, когда я пишу неправильно qury, это не дает мне никакой ошибки !!! – SDWACW

ответ

0

То, что я понял из вашего вопроса неподходящий выхода на чувствительных к регистру имен на именах таблиц или именах столбцов. Я прав?

Насколько я знаю, зарезервированные слова, такие как SELECT, FROM и т. Д. Являются чувствительными к регистру во всех OS'. И все другие пользовательские имена объектов чувствительны к регистру, в *ix OS Окружающая среда. Но не в Windows OS окружающая среда.

Но все конфигурации РСУБД должны обеспечивать нечувствительность к регистру для развертывания кросс-платформы. Именно по этой причине ваше изменение от 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

+0

emm да, я знаю, но когда я меняю чувствительность моего имени таблицы и строки таблицы, это не дает мне никакой ошибки – SDWACW

+0

мой вывод: Создать оператор ... SELECT * FROM question WHERE Selection = 0 AND quest_poll_id = 1 ! -> 0 ---> rowCount: 3 !!! – SDWACW

+0

благодаря моей работе с кодом :) – SDWACW