java - 从 java 设置 MySql 连接的问题
问题描述
在 Netbeans 11.1 中,我试图将我的 Java Maven 代码连接到 MySql 数据库,但每次我尝试根据互联网教程建立连接时都会出错。我在 Dependencies 文件夹中有 mysql-connector-java-8.0.17.jar。我对 java 很陌生,我的高级项目团队成员也遇到了问题,无法弄清楚连接。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class NewJFrame extends javax.swing.JFrame {
//connect to DB
private final String ConnectionString = "jdbc:mysql://54.235.42.66:3306/CIS470db";
private final String UserName = "team6";
private final String Password = "CIS470team6";
//next line has error
private final DBConnect dbConnect;
//next line has error
dbConnect = new DBConnect(ConnectionString, UserName, Password);
第一个错误:找不到符号符号:DBConnect 类
位置:NewJFrame 类
第二个错误:预期
找不到符号符号:DBConnect 类
位置:NewJFrame 类
解决方案
你还没有DBConnect
在你的类中导入,这就是为什么编译器不知道在哪里找到DBConnect
或者它甚至是什么。
您还需要这样做,否则会导致SQLException
:
try {
dbConnect = new DBConnect(ConnectionString, UserName, Password);
} catch (SQLException e) {
e.printStackTrace();
}
另外,在连接数据库时尝试实现单例模式。跟随它真的很方便。
以下是我在一个较旧的项目中的做法:
数据库连接.java
package com.stackoverflow.utility;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import com.stackoverflow.constant.Credentials;
public class DatabaseConnection implements Credentials {
private static DatabaseConnection database;
Connection connection;
public static DatabaseConnection getDatabase() {
if (database == null) {
database = new DatabaseConnection();
}
return database;
}
public Connection getConnection() throws ClassNotFoundException, SQLException {
if (connection == null || connection.isClosed()) {
Class.forName(JDBC_DRIVER);
connection = DriverManager.getConnection(DB_URL, USER, PWD);
}
return connection;
}
}
关闭连接.java
package com.stackoverflow.utility;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class CloseConnection {
public static void close(ResultSet resultSet) {
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(PreparedStatement preparedStatement) {
if (preparedStatement != null) {
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Connection connection) {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(PreparedStatement preparedStatement, ResultSet resultSet) {
close(resultSet);
close(preparedStatement);
}
}
凭据.java
package com.stackoverflow.constant;
public interface Credentials {
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; // Database driver
static final String DB_URL = "jdbc:mysql://116.72.10.78:3352/MohitDB"; // Database url
// Database credentials
static final String USER = "user";
static final String PWD = "password";
}
查询.java
package com.stackoverflow.constant;
public interface Queries {
public static final String AUTHENTICATION_QUERY = "SELECT * FROM TableUser WHERE username = ? AND password = ?";
}
身份验证方法
public boolean getAuthentication(Login login) {
try {
PreparedStatement preparedStatement = DatabaseConnection.getDatabase().getConnection()
.prepareStatement(AUTHENTICATION_QUERY);
preparedStatement.setString(1, login.getUsername());
preparedStatement.setString(2, login.getPassword());
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
close(preparedStatement, resultSet);
return true;
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
推荐阅读
- python - 如何根据用fuzzywuzzy比率计算的相似度得分从列表中消除重复字符串?
- expect - 如何在 UNIX 中将多个命令分配给一个 spawn?
- tinymce-5 - 将 TinyMCE 升级到 5,一种形式不会在 textarea 控件上显示编辑器
- ios - Xcode 12 不支持 PINCache
- git - 当我的本地仓库位于远程仓库之后时,git 有时不会显示
- docker - 参数化 Docker Image 前缀
- javascript - 如何使用 JS 将大量数字转换为 Ascii?
- flutter - 用于聊天应用程序的 Flutter 中的 FutureBuilder
- react-native - 使用 react-native-reanimated 的按钮滑动效果
- android - CameraX 无法在模拟器中保存 EXIF 旋转数据?