2016-04-28 94 views
-2

当我运行我的程序时,存在与createCarMaker关联的空指针异常。我检查了数据库连接,似乎一切正常。请帮我解决一些问题。创建表时JDBC空指针异常

CarDBHelper(){ 
    try 
    { 
     //Establish a driver 
     Class.forName("com.mysql.jdbc.Driver").newInstance(); 

     //Connect to the database 
     conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); 
    } 
    catch (Exception e) 
    { 
     System.err.println("Unable to load MySQL driver."); 
     e.printStackTrace(); 
    } 

} 
/** 
* Creates the tables carMaker and Vehicle with various parameters. 
* 
*/ 
public void createTables(){ 
    try { 
     Statement stmt=conn.createStatement(); 
     String createcarMaker = "CREATE TABLE carMaker " + 
      "(makerID INT AUTO_INCREMENT NOT NULL, " + 
      " makerName VARCHAR(50), " + 
      " PRIMARY KEY (makerID))"; 

     statement.executeUpdate(createcarMaker); 

     String createVehicle = "CREATE TABLE Vehicle " + 
      "(id INT AUTO_INCREMENT NOT NULL, " + 
      " year INT, " + 
      " make INT, " + 
      " model VARCHAR(50), " + 
      " FOREIGN KEY (make) REFERENCES carMaker(makerID)," + 
      " PRIMARY KEY (id))"; 

     statement.executeUpdate(createVehicle); 

    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 

回答

0

我认为你在'语句'和'stmt'中使用Statement的错误声明变量。

此外请在这里放置堆栈跟踪。

0

您正在使用未声明的变量。声明:

Statement stmt=conn.createStatement(); 

但随后引用:

statement.executeUpdate(createcarMaker); 

语句=语句。