Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Ошибка при выборке из БД


Автор: featurelles 15.12.2012, 12:27
Проблема с выборкой данных с БД.

Создаю статическое соединение с БД.
Код

(Этот код в класе    MyDB_tables  )
public static Connection conn; // соединение с БД

try {
            // Подгружаем драйвер
            String driverName = "com.mysql.jdbc.Driver"; 
            Class.forName(driverName);
        } catch (Exception e) {
            System.out.println("failed to load jdbc driver class");
            System.exit(0);
        }

try {
        String url = "jdbc:mysql://"+MyDB_serive_DB_conf.server_name+":3306/";
        conn = DriverManager.getConnection( url, MyDB_DB_conf.login , MyDB_DB_conf.password );
          
        /* Тут соединение установлено и можно обращаться к БД */
        /* conn остаётся открытым */



Далее в своём когде, пытаюсь сделать выборку из бд:
Код

    /**
     * get_user_id получает id пользователя из бд
     * @param jid_name имя пользователя
     * 
     * @return 0 если id не найден
     * @return идентификатор пользователя и бд
     */
    public static int get_user_id(String jid_name)
    {
      PreparedStatement ps;
      ResultSet rs = null;
      
        try {
            /* Производим выборку из БД */
            String query = form_get_user_id_query(jid_name);  // Cформировали такой запрос //   SELECT `id`  FROM `MyDB.users`  WHERE `jid` = "[email protected]";
            ps = MyDB_tables.conn.prepareStatement(query);
         
            /* Производим запрос */
            ps.executeQuery();  // ВОТ ТУТ ПРОИСХОДИТ СБОЙ!!!!
    
            return 0;
        } catch (SQLException ex) {
            Logger.getLogger(MyDB_db_querys.class.getName()).log(Level.SEVERE, null, ex);
            return 0;
        }
    };
  


Код исключения
Код

15.12.2012 4:45:19 MyDB_service.MyDB_db_querys get_user_id
SEVERE: null
java.sql.SQLException: No database selected

.... далее вывод какогото ещё исполняемого кода моей проги. и далее

        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2734)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322)
    at MyDB_service.MyDB_db_querys.get_user_id(MyDB_db_querys.java:92)
    at MyDB_service.MyDB_db_querys.find_user_in_db(MyDB_db_querys.java:47)
    at MyDB_service.MyDB_db_querys.save_invoicing_in_db(MyDB_db_querys.java:161)
    at MyDB_service.MyDB_show_user_wmid_state.work(MyDB_show_user_wmid_state.java:77)
    at MyDB_service.MyDB_dialog_call.MyDB_dialog_call(MyDB_dialog_call.java:44)
    at MyDB_service.MyDB_process_message.MyDB_process_message(MyDB_process_message.java:52)
    at jabber_service.Jabber_service$1.processPacket(Jabber_service.java:69)
    at org.jivesoftware.smack.Connection$ListenerWrapper.notifyListener(Connection.java:813)
    at org.jivesoftware.smack.PacketReader$ListenerNotification.run(PacketReader.java:453)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)


    
Как мне правильно произвести выборку из БД ?

Автор: Dummy 15.12.2012, 13:06
У вас URL подключения не содержит имени базы данных, только хост и порт:
Код

String url = "jdbc:mysql://"+MyDB_serive_DB_conf.server_name+":3306/";

добавьте к URL имя вашей базы, как-нибудь так:
Код

// Присвойте dbName правильное значение
String dbName = "featurelles_DB";
String url = "jdbc:mysql://"+MyDB_serive_DB_conf.server_name+":3306/" + dbName;

Автор: featurelles 15.12.2012, 14:10
Огромное СПАСИБО!
Помогло!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)