Maxim Alexandru
Maxim Alexandru

Reputation: 77

How to insert data into database from the main file?

I've got 2 file in my java project : MysqlConnect and Main . I want to run query from Main class.It's possible?

This is MysqlConnect file:

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");
    }

}
}

And this is the Main file:

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();
}

}

The error(Exception) is on the MysqConnection at the try/catch

rs = stmt.executeUpdate(query);

Upvotes: 0

Views: 104

Answers (1)

dimoniy
dimoniy

Reputation: 5995

You assign statement object to a local variable named stmt instead of the object field with the same name. Replace this

Statement stmt = conn.createStatement();

With this:

this.stmt = conn.createStatement();

this is not necessary here, but it's a good practice to have it there.

Upvotes: 1

Related Questions