我正在通过Java创建一个SQL数据库。问题是打开整个项目时总是出现错误。请帮忙。电脑写的是这样的:
Exception in thread "main" java.lang.NullPointerException
at Oceny.Sql.<init>(Sql.java:16)
以下是包含此错误的类的代码。
public class Sql {
public static final String DRIVER="org.sqlite.JDBC";
public static final String DB_URL ="jdbc:sqlite:sqlDB/szkola.db";
private Connection con;
private Statement stat;
public Sql() {
try{
Class.forName(Sql.DRIVER);
String sql = "CREATE DATABASE szkola";
try {
stat.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("jebut");
e.printStackTrace();
}
}catch(ClassNotFoundException e){
System.err.println("Brak sterownika JDBC");
e.printStackTrace();
}
try {
con = DriverManager.getConnection(DB_URL);
stat = (Statement) con.createStatement();
} catch (SQLException e) {
System.err.println("Problem z otwarciem polaczenia");
e.printStackTrace();
}
}
public void createtable(){
try{
String przedmiot="CREATE TABLE IF NOT EXISTS przedmiot (id INTEGER PRIMARY KEY AUTOINCREMENT, nazwa varchar(20), sprawdziany int(6), kartkowy int(6), pd int(6))"; //prace = połączenie z inną tabelą prac dodatkowych
String prace="CREATE TABLE IF NOT EXISTS prace (id INTEGER PRIMARY KEY AUTOINCREMENT, przedmiot varchar(20), praca(250), czas date(100))";
String plan="CREATE TABLE IF NOT EXISTS plan (id INTEGER PRIMARY KEY AUTOINCREMENT, day varchar(20))";
String godzina="CREATE TABLE IF NOT EXISTS godzina(id INTEGER PRIMARY KEY AUTOINCREMENT, day varchar(20), godzina varchar(5), przedmiot varchar(20))";//chodiz o godzinę lekcyjną
stat.execute(przedmiot);
stat.execute(prace);
stat.execute(plan);
stat.execute(godzina);
}catch(SQLException e){
System.out.print("problem z tworzeniem tabel");
}
}
}
答案 0 :(得分:4)
变量
stat
在您的情况下为空
首先初始化它。
似乎你先使用它,然后初始化它。
答案 1 :(得分:0)
要纠正的错误很多:
答案 2 :(得分:0)
构造函数中的try/catch
块的顺序错误。这应该是第一个,因此初始化stat
:
try {
con = DriverManager.getConnection(DB_URL);
stat = (Statement) con.createStatement();
} catch (SQLException e) {
System.err.println("Problem z otwarciem polaczenia");
e.printStackTrace();
}