我正在尝试连接到本地主机上的 MariaDB 数据库(使用 xampp)。第一次连接时,连接建立,我设法创建一个包含两个字段“用户名”“密码”的表。此后,当我尝试执行其他操作时,连接将变为空,并且我无法插入或执行任何查询。
import java.sql.*;
class MyDatabase {
private Connection conn;
private PreparedStatement psAddPerson;
MyDatabase(String host, String user, String password) throws Exception {
Connection conn = DriverManager.getConnection("jdbc:mariadb:" + host,
user, password);
psAddPerson = null;
}
public void addPerson(String username, String password) {
try{
if( psAddPerson == null ){
String sqlAddPerson = "insert into users (usern, pass) values (?,?)";
psAddPerson = conn.prepareStatement(sqlAddPerson);
}
psAddPerson.setString(1, username);
psAddPerson.setString(2, password);
psAddPerson.executeUpdate();
} catch (SQLException e) {
System.err.println("Couldn't create add person");
e.printStackTrace();
}
}
}
public class Main {
public static void main(String[] args) {
String host = "//localhost:3306/test";
String user = "root";
String pass = "";
MyDatabase newDb = null;
try {
newDb = new MyDatabase(host, user, pass);
} catch (Exception e) {
e.printStackTrace();
}
String username = "admin";
String password = "password";
if (newDb != null) {
newDb.addPerson(username, password);
}
}
}
当尝试执行以下代码时,此代码会产生 NullPointerException:
psAddPerson = conn.prepareStatement(sqlAddPerson);
我希望能够对本地主机数据库执行查询。
谢谢
最佳答案
更改此:
Connection conn = DriverManager.getConnection("jdbc:mariadb:"+ 主机、用户、密码);
通过这个:
conn = DriverManager.getConnection("jdbc:mariadb:"+ 主机、用户、密码);
这样您就可以在构造函数中实例化实例变量而不是局部变量。
希望这有帮助!
关于Java 无法连接到本地主机上的 MariaDB 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47607228/