我正在尝试连接到本地主机上的 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);
我希望能够对我的 localhost 数据库执行查询。
谢谢
改变这个:
Connection conn = DriverManager.getConnection("jdbc:mariadb:" + host, user, password);
这样:
conn = DriverManager.getConnection("jdbc:mariadb:" + host, user, password);
通过这种方式,您将实例化实例变量而不是构造函数中的局部变量。
希望这可以帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句