Java 无法连接到本地主机上的 MariaDB 数据库

标签 java database jdbc mariadb

我正在尝试连接到本地主机上的 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);

我希望能够对本地主机数据库执行查询。

图片来自 phpMyAdmin 服务器类型: Picture of server type

谢谢

最佳答案

更改此:

Connection conn = DriverManager.getConnection("jdbc:mariadb:"+ 主机、用户、密码);

通过这个:

conn = DriverManager.getConnection("jdbc:mariadb:"+ 主机、用户、密码);

这样您就可以在构造函数中实例化实例变量而不是局部变量。

希望这有帮助!

关于Java 无法连接到本地主机上的 MariaDB 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47607228/

相关文章:

Python - 如何打印 Sqlite 表

database - 为什么数据库不被视为全局状态的一种形式?

java - 为什么启用 native 加密 (ASO) 后,Oracle 中的每个错误 SQL 请求都会出现 "Checksum fail"?

java - 是否可以在数据库中安装 Java 编译器?

java - 我的代码和 apache poi 的内存和执行时间比较

java - 如何在 Java 中监听 IP 和端口?与服务器套接字?

java - "Cannot resolve method ' openFileOutput(Java.lang.String, int) '"

c# - 在 LinqToSql 中切换数据库

mysql - jdbc批处理不同语句

java - Hibernate+PostgreSQL 抛出JDBCConnectionException : Cannot open connection