база данных, соединяющаяся с кодом java, не будет работать - PullRequest
1 голос
/ 17 апреля 2020

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

package db_cliinic;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;


public class DB_Cliinic {

public static void main(String[] args) {

 Connection con = null;
        Statement stat = null;
        ResultSet res = null;
        String q = "select * from DB.EMPLOYEE";
        try { 

        con = DriverManager.getConnection("jdbc:derby://localhost1527/VetClinic", "DB", "123456");
        stat = con.createStatement();
        res = stat.executeQuery(q);

        while (res.next()) {

            char id = (char) res.getCharacterStream("EMP_ID").read();
            String name = res.getString("NAME");
            char phone =(char) res.getCharacterStream("PHONE_NUMBER").read();
            String Edu = res.getString("EDUCATION_LEVEL");
            double sal = res.getDouble("SALARY");
            String role = res.getString("ROLE");
            char sex = (char) res.getCharacterStream("SEX").read();
            String addr = res.getString("ADDRESS");
            char crn = (char) res.getCharacterStream("ECRN").read();
            char super_id = (char) res.getCharacterStream("SUPER_ID").read();



            System.out.println("  "+id+"  "+name+"  "+phone+"  "+Edu+"  "+sal+"  "+role+"  "+sex+"  "+addr+"  "+crn+super_id);

        }
    }
    catch (SQLException e){      
    } catch (IOException ex) {
        Logger.getLogger(DB_clinic.class.getName()).log(Level.SEVERE, null, ex);  }  }  }

Ответы [ 2 ]

2 голосов
/ 17 апреля 2020

Попробуйте использовать следующий код:

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;


public class DB_Cliinic {

public static void main(String[] args) {
        Connection con = null;
        Statement stat = null;
        ResultSet res = null;
        String q = "select * from EMPLOYEE";
        try { 

        con = DriverManager.getConnection("jdbc:derby://localhost:1527/VetClinic;");
        stat = con.createStatement();
        res = stat.executeQuery(q);

        while (res.next()) {

            char id = (char) res.getCharacterStream("EMP_ID").read();
            String name = res.getString("NAME");
            char phone =(char) res.getCharacterStream("PHONE_NUMBER").read();
            String Edu = res.getString("EDUCATION_LEVEL");
            /*TODO: uncomment the block below*/ 
            /*double sal = res.getDouble("SALARY");
            String role = res.getString("ROLE");
            char sex = (char) res.getCharacterStream("SEX").read();
            String addr = res.getString("ADDRESS");
            char crn = (char) res.getCharacterStream("ECRN").read();
            char super_id = (char) res.getCharacterStream("SUPER_ID").read();*/



            System.out.println("  "+id+"  "+name+"  "+phone+"  "+Edu);

        }
    }
    catch (SQLException e){
        System.out.println(e.getMessage());
    } catch (IOException ex) {
        Logger.getLogger(DB_Cliinic.class.getName()).log(Level.SEVERE, null, ex);  }  }  }
  • Попробуйте добавить один этап отладки, как я делал с: System.out.println(e.getMessage()); вы увидите ошибку. Ошибка вызвана проблемой соединения с базой данных.

  • Исправление проблемы соединения

Ваше имя базы данных VetClinic и ваша таблица EMPLOYEE

  • Интерактивная команда Derby для создания вашей базы данных

    connect 'jdbc:derby:VetClinic;create=true';

  • Создать таблицу и вставить данные

create table EMPLOYEE(EMP_ID char(10) primary key, NAME varchar(50), PHONE_NUMBER char(10), EDUCATION_LEVEL varchar(50), ...);

insert into EMPLOYEE values ('id-1', 'name1', '00001', "Level10"), ('id-2', 'name2', '00002', 'Level11'), ...;

  • В конце убедитесь, что у вас есть правильный URL-адрес соединения jdbc:derby://localhost:1527/VetClinic;

Перед запуском программы запустите сервер Derby, сообщение должно выглядеть следующим образом:

Пожалуйста, убедитесь, что Apache Derby Network Server запущен и готов принимать соединения на порт 1527

0 голосов
/ 17 апреля 2020

вы, скорее всего, получите SQLException, но блок catch пуст. Попробуйте также войти в систему и посмотреть, что он говорит.

URL вашего подключения выглядит подозрительно - я полагаю, вы хотели сказать «localhost: 1527», а не «localhost1527»?!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...