Java无法连接到localhost上的MariaDB数据库
我正在尝试连接到本地主机上的MariaDB数据库(使用xampp)。我第一次连接时,连接就建立起来了,我设法用两个字段“username”“password”创建了一个表。此后,当我尝试执行任何其他操作时,连接将变为null,并且我无法插入或执行任何查询Java无法连接到localhost上的MariaDB数据库,java,database,jdbc,mariadb,Java,Database,Jdbc,Mariadb,我正在尝试连接到本地主机上的MariaDB数据库(使用xampp)。我第一次连接时,连接就建立起来了,我设法用两个字段“username”“password”创建了一个表。此后,当我尝试执行任何其他操作时,连接将变为null,并且我无法插入或执行任何查询 import java.sql.*; class MyDatabase { private Connection conn; private PreparedStatement psAddPerson; MyDat
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);
我希望能够执行对本地主机数据库的查询
来自服务器类型的phpMyAdmin的图片:
谢谢修复很容易更改:
Connection conn = DriverManager.getConnection("jdbc:mariadb:" + host,
user, password);
致:
解决方案很容易更改:
Connection conn = DriverManager.getConnection("jdbc:mariadb:" + host,
user, password);
致:
更改此项:
Connection conn=DriverManager.getConnection(“jdbc:mariadb:+host,user,password”)代码>
据此:
conn=DriverManager.getConnection(“jdbc:mariadb:+host,user,password”)代码>
这样,您将实例化实例变量,而不是构造函数中的局部变量
希望这有帮助更改此选项:
Connection conn=DriverManager.getConnection(“jdbc:mariadb:+host,user,password”)代码>
据此:
conn=DriverManager.getConnection(“jdbc:mariadb:+host,user,password”)代码>
这样,您将实例化实例变量,而不是构造函数中的局部变量
希望这有帮助稍微调整一下,然后更改此设置:
Connection conn = DriverManager.getConnection("jdbc:mariadb:" + host, user, password);
对此:
conn = DriverManager.getConnection("jdbc:mariadb:" + host, user, password);
稍微调整一下并更改此设置:
Connection conn = DriverManager.getConnection("jdbc:mariadb:" + host, user, password);
对此:
conn = DriverManager.getConnection("jdbc:mariadb:" + host, user, password);
@YCF_L完成了,但没有太大变化。您正在构造函数中创建连接实例,需要初始化实例变量conn
Ahh好的,谢谢@Eleazarenriques当然,这很重要,实例变量总是空的,因为您正在构造函数中实例化一个局部变量。@YCF_L完成了,但变化不大。.您正在构造函数中创建一个连接实例,您需要初始化实例变量conn
Ahh好的,谢谢@当然,这很重要,实例变量总是空的,因为你在构造函数中实例化一个局部变量。谢谢:)你比另一个人快,所以会接受你的答案好!:-)编码时间快乐!谢谢:)你比其他人快,所以我会接受你的回答好的!:-)编码时间快乐!