Member 14947922 Ответов: 3

У меня есть проблема с java.sql.sqlexception: url-адрес не может быть нулевым и исключением в потоке "AWT-eventqueue-0" java.lang.nullpointerexception plzz help me


пакет qlsach;
импорт java.sql.Connection;
импорт java.sql.DriverManager;
импорт Java.для SQL.Объект PreparedStatement;
импорт java.sql.ResultSet;
импорт java.sql.SQLException;
импорт java.sql.Statement;
импорт java.util.logging.Уровень;
импорт java.util.logging.Лесоруб;
публичный класс DbConnect {



Соединение con;
частная строка stringCon;


public DbConnect() вызывает исключение SQLException{
Строки Stringcon;
Stringcon = "jdbc:sqlserver://MSI:1433;databaseName=QLSach";
пробовать{
con = DriverManager.getConnection(stringCon, "sa", "sa");
}
catch (SQLException ex){
Регистратор.getLogger(DbConnect.класс.метод getname()).журнал(уровень.Тяжелый, нулевой, бывший);
}

}
public ResultSet getData(String stringSQL){
Результирующий набор rs = null;
пробовать{
Заявление Государственного = кон.createStatement();
РС = государство.метод executequery(stringSQL);
} catch (SQLException ex){
Регистратор.getLogger(DbConnect.класс.метод getname()).журнал(уровень.Тяжелый, нулевой, бывший);
}
вернуться РС;
}
public int ExcuteSQLInsert(String[] stringSQL){
int rowsInserted = 0;
Строка sql = "вставить в значение Sach(MaSach,TenSach,TheLoai,NXB,Sotrang,GiaTien ) (?,?,?,?,?,?)";
Подготовленное заявление о признании;
пробовать{
оператор = con.prepareStatement(sql);
statement.setString(1, stringSQL[0]);
statement.setString(2, stringSQL[1]);
statement.setString(3, stringSQL[2]);
statement.setString(4, stringSQL[3]);
statement.setString(5, stringSQL[4]);
statement.setString(6, stringSQL[5]);
rowsInserted = оператор.executeUpdate();
}
catch(SQLException ex){
Регистратор.getLogger(DbConnect.класс.метод getname()).журнал(уровень.Тяжелый, нулевой, бывший);
}
return rowsInserted;
}

public int ExcuteSQLUpdate(String[] stringSQL){
int rowsInserted = 0;
Строка sql = "UPDATE Sach SET TenSach=?,TheLoai=?,NXB=?,SoTrang=?,GiaTien=? Где Масач=?";
Подготовленное заявление о признании;
пробовать{
оператор = con.prepareStatement(sql);
statement.setString(1, stringSQL[0]);
statement.setString(2, stringSQL[1]);
statement.setString(3, stringSQL[2]);
statement.setString(4, stringSQL[3]);
statement.setString(5, stringSQL[4]);
statement.setString(6, stringSQL[5]);
rowsInserted = оператор.executeUpdate();
}
catch(SQLException ex){
Регистратор.getLogger(DbConnect.класс.метод getname()).журнал(уровень.Тяжелый, нулевой, бывший);
}
return rowsInserted;
}
public int ExcuteSQLDelete(String[] stringSQL){
int rowsInserted = 0;
Строка sql = "удалить форму Sach, где MaSach=?";
Подготовленное заявление о признании;
пробовать{
оператор = con.prepareStatement(sql);
statement.setString(1, stringSQL[0]);
rowsInserted = оператор.executeUpdate();
}
catch(SQLException ex){
Регистратор.getLogger(DbConnect.класс.метод getname()).журнал(уровень.Тяжелый, нулевой, бывший);
}
return rowsInserted;
}
}

Что я уже пробовал:

run:
Sep 25, 2020 2:08:41 AM qlsach.DbConnect <init>
SEVERE: null
java.sql.SQLException: The url cannot be null
	at java.sql.DriverManager.getConnection(DriverManager.java:649)
	at java.sql.DriverManager.getConnection(DriverManager.java:247)
	at qlsach.DbConnect.<init>(DbConnect.java:31)
	at qlsach.frmQuanLySach.<init>(frmQuanLySach.java:28)
	at qlsach.frmQuanLySach.lambda$main$0(frmQuanLySach.java:585)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at qlsach.frmQuanLySach.showData(frmQuanLySach.java:43)
	at qlsach.frmQuanLySach.<init>(frmQuanLySach.java:29)
	at qlsach.frmQuanLySach.lambda$main$0(frmQuanLySach.java:585)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
BUILD SUCCESSFUL (total time: 1 second)

3 Ответов

Рейтинг:
16

raddevus

Проверьте свой код...

Stringcon = "jdbc:sqlserver://MSI:1433;databaseName=QLSach";
пробовать{
как Con = DriverManager.метод getconnection(stringCon, "са", "са");
}

Сравните этот случай. Это не одни и те же переменные.
Измените 2-ю строку на :

con = DriverManager.getConnection(Stringcon, "sa", "sa");


И это будет исправлено. На самом деле вы передаете null, и это то, что является исключением.


Рейтинг:
1

Sandeep Mewara

Ссылка: Как разрешить java.lang.Исключение NullPointerException[^]

Цитата:
На языке Java - java.lang.Исключение NullPointerException возникает при обращении к ссылочной переменной (или снятии ссылки) и не указывает ни на один объект. Эта ошибка может быть устранена с помощью блока try-catch или условия if-else, чтобы проверить, является ли ссылочная переменная нулевой, прежде чем разыменовать ее.


Ваш случай, ошибка и строка кода довольно ясны:
т. е. при доступе к данным для метода qlsach.frmQuanLySach.showData(frmQuanLySach.java:43), он бросил sqlexception на java.sql.DriverManager.getConnection(DriverManager.java:649)

Отладьте и посмотрите, почему это null. Установите его правильно и обработайте нулевое условие.


Если нужно, посмотрите:
jdb - отладчик Java[^]
Отладка среды разработки Eclipse IDE для разработчиков Java | The Eclipse Foundation[^]


Рейтинг:
1

Richard MacCutchan

У вас есть две переменные с почти одинаковыми именами: stringCon и StringCon Вы посылаете неинициализированного в getConnection.

private String stringCon; // NB this reference is null


public DbConnect() throws SQLException{
String Stringcon; // NB this is the one with the URL
Stringcon = "jdbc:sqlserver://MSI:1433;databaseName=QLSach";
try{
// NB and here you pass the null reference
con = DriverManager.getConnection(stringCon, "sa", "sa");
}

Удалите частный из класса, так как он никогда не требуется.