2014-09-23 4 views
-1

Здравствуйте, я изо всех сил пытаюсь установить автоматическое соединение с моей базой данных jdbc. Когда я запускаю программу, она дает мне эту ошибку: java.sql.SQLNonTransientConnectionException:java.net.ConnectException:Error connecting to server localhost on port 1527 with message Connection refused: connect.Java устанавливает соединение с jdbc с кодом

Когда я вручную подключаюсь к моему драйверу jdbc, программа работает нормально. Я хотел бы знать, есть ли способ, которым я могу подключиться к драйверу, используя код вместо того, чтобы делать это mannualy.

Вот некоторые из моего кода:

String createDB = "jdbc:derby://localhost:1527/C:/211092207/HotelBookings;create=true"; 
     String createCustomer = "CREATE TABLE CUSTOMER (CUSTOMERID NUMERIC(15) NOT NULL PRIMARY KEY, LASTNAME VARCHAR(20), FIRSTNAME VARCHAR(20), GENDER CHAR(1), EMAIL VARCHAR(50), CREDITRATING VARCHAR(9), NATIONALITY VARCHAR(20), DATEOFBIRTH VARCHAR(20), PHONE NUMERIC(10), CELLPHONE NUMERIC(10))"; 
     String createRoom = "CREATE TABLE ROOM (ROOMNO NUMERIC(5) PRIMARY KEY, ROOMTYPE VARCHAR(9), DAILYRATE NUMERIC(20), STATUS CHAR(1))"; 
     String createBooking = "CREATE TABLE BOOKING (BOOKINGID NUMERIC(10) NOT NULL PRIMARY KEY, ROOMNO NUMERIC(5), PROPOSEDCHECKINDATE DATE, PROPOSEDCHECKOUTDATE DATE, CHECKEDIN CHAR(1), ACTUALCHECKINDATE DATE, CHECKEDOUT CHAR(1), ACTUALCHECKOUTDATE DATE, CANCELLED CHAR(1), CANCELDATE DATE, CANCELREASON VARCHAR(100),AMOUNT NUMERIC(20), PAYDATE DATE, PAYMODE VARCHAR(15), STATUS VARCHAR(50), PAID CHAR(1), DATE DATE, CUSTOMERID NUMERIC(15))"; 
     String refOne = "ALTER TABLE BOOKING ADD FOREIGN KEY(CUSTOMERID) REFERENCES CUSTOMER(CUSTOMERID)"; 
     String refTwo = "ALTER TABLE BOOKING ADD FOREIGN KEY(BOOKINGID) REFERENCES BOOKING(BOOKINGID)"; 

     Date one = new Date(20/9/2014); 
     Date two = new Date(10/10/1010); 
     Date three = new Date(16/9/2014); 
     Booking book = new Booking(); 
     book.SetBookingID("9879974564"); 
     book.SetRoomNumber("001"); 
     book.SetProposedCheckInDate(one); 
     book.SetProposedCheckOutDate(one); 
     book.SetCheckedIn('F'); 
     book.SetActualCheckInDate(one); 
     book.SetActualCheckOutDate(one); 
     book.setCancelled('F'); 
     book.SetCancelDate(two); 
     book.SetCancelReason(""); 
     book.SetAmount(10.20); 
     book.SetPayDate(one); 
     book.SetPayMode("Bank Deposit"); 
     book.SetStatus("Done"); 
     book.SetPaid('T'); 
     book.SetDate(three); 
     book.SetCustomerID("9112315190086"); 

     String insertStatement = ("INSERT INTO ROOM(ROOMNO, ROOMTYPE, DAILYRATE, STATUS) VALUES (001, 'Single', 120.00, 'A')"); 
     String insertStatementTwo = ("INSERT INTO ROOM(ROOMNO, ROOMTYPE, DAILYRATE, STATUS) VALUES (002, 'Single', 120.00, 'A')"); 
     String insertStatementThree = ("INSERT INTO ROOM(ROOMNO, ROOMTYPE, DAILYRATE, STATUS) VALUES (003, 'Double', 230.00, 'A')"); 

     String insertStatementFour = ("INSERT INTO CUSTOMER(CUSTOMERID, LASTNAME, FIRSTNAME, GENDER, EMAIL, CREDITRATING, NATIONALITY, DATEOFBIRTH, PHONE, CELLPHONE) " + 
       "VALUES (9112415190086, 'Nel', 'Piet', 'M', '[email protected]', 'Good', 'America', '31/12/2014', 0721360363, 0721589859)"); 

     String insertStatementFive = ("INSERT INTO CUSTOMER(CUSTOMERID, LASTNAME, FIRSTNAME, GENDER, EMAIL, CREDITRATING, NATIONALITY, DATEOFBIRTH, PHONE, CELLPHONE) " + 
       "VALUES (9112315190086, 'van Tonder', 'Hannes', 'M', '[email protected]', 'Good', 'South Africa', '31/12/2014', 0711360193, 0791589789)"); 

     String insertStatementSix = ("INSERT INTO CUSTOMER(CUSTOMERID, LASTNAME, FIRSTNAME, GENDER, EMAIL, CREDITRATING, NATIONALITY, DATEOFBIRTH, PHONE, CELLPHONE) " + 
       "VALUES (9115987489968, 'le Roux', 'Paul', 'M', '[email protected]', 'Good', 'South Africa', '31/12/2014', 0721361193, 0821589789)"); 
try 
{ 
Connection conn = DriverManager.getConnection(createDB); 
      Statement stmt = conn.createStatement(); 

} 
catch(Exception ex) 
{ 

} 
conn.close(); 

Я подозреваю, что Maby я бы добавить еще одно заявление в моем Ьгу блоке. Когда я отлаживать программу проблема заключается в этом утверждении:

Connection conn = DriverManager.getConnection(createDB); 

, когда программа должна выполнить это заявление он идет в улове и бросить сообщение об ошибке.

+0

Пожалуйста, разместите сообщение об ошибке. – User27854

+0

Похоже, что ваша служба db не работает. или работает на другом порту. – Jens

+0

Вам необходимо указать имя пользователя и пароль Строка createDB = "jdbc: derby: // localhost: 1527/C:/211092207/HotelBookings; create = true"; что-то вроде (user = USERNAME; пароль = PASSWORD;) – User27854

ответ

0

Ошибка указывает на «Соединение отказано». Уменьшите тест кода, чтобы просто подключиться, пока это не будет успешным. Имя пользователя и пароль, по-видимому, нигде не установлены, поэтому начните с этого. См. Примеры Derby строки подключения и параметры для того, где установить пользователя и pw. Рекомендовать не жесткий пароль кодирования, а скорее отправить его через параметр подключения, взятый из оператора в качестве аргумента консоли.

0

Вы должны следовать 7 шагов в JDBC,

1) Загрузите драйвер

2) Определить URL соединения

3) Установить соединение

4) Создать себе объект

5) Выполнение запроса

6) Обработать результаты

7) закрыть соединение

вы не загружая класс в любом месте. Для базы данных котелка моего предположения

Class.forName("org.apache.derby.jdbc.ClientDriver"); 

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

+0

да, вы правы, я должен обновить свой ответ .. – User27854