public UserInfoManager(){
try{
// 连接MySQL数据库
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/userdb?useSSL=false";
Connection connection = DriverManager.getConnection(url, "root", "password");
// 预处理SQL语句
loginStatement = connection.prepareStatement("SELECT * FROM users WHERE username=? AND password=?");
updateStatement = connection.prepareStatement("UPDATE users SET email=?, phone=? WHERE username=?");
passwordStatement = connection.prepareStatement("UPDATE users SET password=? WHERE username=user1 AND password=?");
registerStatement = connection.prepareStatement("INSERT INTO users (username, password, email, phone) VALUES (?, ?, ?, ?)");
为什么结果显示failed to connect to database,问号处具体该填什么
?是参数占位,与连接数据库失败没有关系。本机安装MySQL并启动没?
设置参数可参考这个:https://blog.csdn.net/m0_61961937/article/details/126931897
在这个连接数据库的URL中,问号?处需要填入useUnicode=true&characterEncoding=utf8,所以正确的URL应该是:
java
String url = "jdbc:mysql://localhost:3306/userdb?useSSL=false&useUnicode=true&characterEncoding=utf8";
useUnicode=true&characterEncoding=utf8这两个参数的作用是:
useUnicode=true:指明使用Unicode字符集
characterEncoding=utf8:设置数据库连接使用的编码方式为UTF-8
这样可以避免连接数据库时出现乱码的问题。
所以修复后的代码应该是:
java
public UserInfoManager(){
try{
// 连接MySQL数据库
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/userdb?useSSL=false&useUnicode=true&characterEncoding=utf8";
Connection connection = DriverManager.getConnection(url, "root", "password");
// 预处理SQL语句
loginStatement = connection.prepareStatement("SELECT * FROM users WHERE username=? AND password=?");
updateStatement = connection.prepareStatement("UPDATE users SET email=?, phone=? WHERE username=?");
passwordStatement = connection.prepareStatement("UPDATE users SET password=? WHERE username=user1 AND password=?");
registerStatement = connection.prepareStatement("INSERT INTO users (username, password, email, phone) VALUES (?, ?, ?, ?)");
} catch (SQLException e) {
e.printStackTrace();
}
}
希望可以解决你的问题!
找找有没有mysql-connector-java-版本号.jar,放到工程里,添加到build path。如果是maven项目就找找有没有加这个dependency。版本号取mysql服务端版本,比如5.7.26?
不知道你这个问题是否已经解决, 如果还没有解决的话: datasource:
driver:xxxx
url: xxxx
username: xxxx
password: xxxx