Click here to Skip to main content
15,887,746 members
Please Sign up or sign in to vote.
3.00/5 (2 votes)
See more:
package qlsach;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
public class DbConnect {



Connection con;
private String stringCon;


public DbConnect() throws SQLException{
String Stringcon;
Stringcon = "jdbc:sqlserver://MSI:1433;databaseName=QLSach";
try{
con = DriverManager.getConnection(stringCon, "sa", "sa");
}
catch (SQLException ex){
Logger.getLogger(DbConnect.class.getName()).log(Level.SEVERE, null, ex);
}

}
public ResultSet getData(String stringSQL){
ResultSet rs = null;
try{
Statement state = con.createStatement();
rs = state.executeQuery(stringSQL);
} catch (SQLException ex){
Logger.getLogger(DbConnect.class.getName()).log(Level.SEVERE, null, ex);
}
return rs;
}
public int ExcuteSQLInsert(String[] stringSQL){
int rowsInserted = 0;
String sql = "INSERT INTO Sach(MaSach,TenSach,TheLoai,NXB,Sotrang,GiaTien ) VALUE (?,?,?,?,?,?)";
PreparedStatement statement;
try{
statement = 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 = statement.executeUpdate();
}
catch(SQLException ex){
Logger.getLogger(DbConnect.class.getName()).log(Level.SEVERE, null, ex);
}
return rowsInserted;
}

public int ExcuteSQLUpdate(String[] stringSQL){
int rowsInserted = 0;
String sql = "UPDATE Sach SET TenSach=?,TheLoai=?,NXB=?,SoTrang=?,GiaTien=? WHERE MaSach=?";
PreparedStatement statement;
try{
statement = 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 = statement.executeUpdate();
}
catch(SQLException ex){
Logger.getLogger(DbConnect.class.getName()).log(Level.SEVERE, null, ex);
}
return rowsInserted;
}
public int ExcuteSQLDelete(String[] stringSQL){
int rowsInserted = 0;
String sql = "DELETE FORM Sach WHERE MaSach=?";
PreparedStatement statement;
try{
statement = con.prepareStatement(sql);
statement.setString(1, stringSQL[0]);
rowsInserted = statement.executeUpdate();
}
catch(SQLException ex){
Logger.getLogger(DbConnect.class.getName()).log(Level.SEVERE, null, ex);
}
return rowsInserted;
}
}

What I have tried:

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)
Posted
Updated 24-Sep-20 16:34pm

Reference: How to resolve the java.lang.NullPointerException[^]
Quote:
In Java, the java.lang.NullPointerException is thrown when a reference variable is accessed (or de-referenced) and is not pointing to any object. This error can be resolved by using a try-catch block or an if-else condition to check if a reference variable is null before dereferencing it.


Your case, error and line of code is pretty clear:
i.e. while accessing data for method qlsach.frmQuanLySach.showData(frmQuanLySach.java:43), it threw a sqlexception at java.sql.DriverManager.getConnection(DriverManager.java:649)

Debug and see why that is null. Set it up correctly and handle null condition.


If needed, look:
jdb - The Java Debugger[^]
Debugging the Eclipse IDE for Java Developers | The Eclipse Foundation[^]
 
Share this answer
 
Check out YOUR code...

Stringcon = "jdbc:sqlserver://MSI:1433;databaseName=QLSach";
try{
con = DriverManager.getConnection(stringCon, "sa", "sa");
}

Compare the case. These are not the same two variables.
Change the 2nd line to :

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


And it'll be fixed. You are actually passing in a null and that is what the exception is.
 
Share this answer
 
You have two variables with almost the same names: stringCon and StringCon. You send the uninitialised one to getConnection.
Java
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");
}

Remove the private one from the class as it is never required.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900