2013-12-16 3 views
0

У меня есть 2 файла в моем проекте java: MysqlConnect и Main. Я хочу запустить запрос из Main class. Это возможно?Как вставить данные в базу данных из основного файла?

Это MysqlConnect файл:

public class MysqlConnect { 

public Connection conn = null; 
public String url = "jdbc:mysql://localhost:3306/"; 
public String dbName = "jdbctutorial"; 
public String driver = "com.mysql.jdbc.Driver"; 
public String userName = "birthday"; 
public String password = "123456"; 
public Statement stmt; 
public String query = ""; 
public int rs; 

public void crearedatabase() { 
    try { 

     Class.forName(driver).newInstance(); 
     conn = DriverManager 
       .getConnection(url + dbName, userName, password); 
     // System.out.println("Connected to the database"); 
     Statement stmt = conn.createStatement(); 

    } catch (Exception e) { 
     System.out.println("Baza de date nu a fost creata"); 
    } 

} 

public void executeSql() { 

    try { 
     rs = stmt.executeUpdate(query); 
    } catch (Exception e) { 
     System.out.println("Mysql Error"); 
    } 

} 
} 

И это Главный файл:

public class Main { 
public static void main(String[] args) throws SQLException 
{ 



MysqlConnect sqlconnect = new MysqlConnect(); 
sqlconnect.crearedatabase(); 

sqlconnect.query="INSERT INTO `jdbctutorial`.`persons` (`id`, `nume`, `prenume`, `data`) VALUES (NULL, 'xxxx', 'xxxx', '1990-12-12');"; 
sqlconnect.executeSql(); 
} 

} 

Ошибка (Exception) находится на MysqConnection в попытке/улов

rs = stmt.executeUpdate(query); 
+0

'Это возможно ???' Да !!! 'Ошибка (исключение) находится в MysqConnection при попытке/catch' какая ошибка? пожалуйста, напишите полный стек. Кроме того, попытайтесь избавиться от всех 'символов в запросе – Taylor

+0

Эта ошибка: java.lang.NullPointerException \t на MysqlConnect.executeSql (MysqlConnect.java:33) \t в Main.main (Main.java:19) –

+0

Try отладки. По какой-то причине ваш объект 'stmt' имеет значение null. – Taylor

ответ

1

Вы присваиваете объект утверждения локальной переменной с именем stmt вместо поля объекта с тем же именем. Заменить этот

Statement stmt = conn.createStatement(); 

с этим:

this.stmt = conn.createStatement(); 

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

+0

Большое спасибо dimoniy .. –

+0

Хорошо заметили, не могу поверить, что я пропустил это. – Taylor

Смежные вопросы