功能:
该程序可以通过Java程序 ,使用 外部 编写的 配置文件,进行数据库的连接与资源的释放,调用MySQL数据库,判断用户是否可以登陆成功。
使用Preparedstatement类中的 方法,解决了SQL语句的注入问题。
主测试类
package JDBC_test;
import java.sql.*;
import java.util.Scanner;
public class Landing {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = sc.next();
System.out.println("请输入密码:");
String password = sc.next();
boolean b = new Landing().landing1(name, password);
if (b == true) {
System.out.println("登陆成功");
} else {
System.out.println("用户名或密码错误");
}
}
public boolean landing1(String username, String password) {
if (username == null || password == null) {
return false;
}
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
connection = JDBCUtils.getConnection();
String str = "select * from user where username = ? and password = ?";
preparedStatement = connection.prepareStatement(str);
preparedStatement.setString(1,username);
//给第一个?赋值
preparedStatement.setString(2,password);
//给第二个?赋值
resultSet = preparedStatement.executeQuery();
//preparedStatement的特有不需要传参的方法
return resultSet.next();
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
JDBCUtils.release2(resultSet, connection, preparedStatement);
}
return false;
}
}
配置文件
url=jdbc:mysql://localhost:3306/landing
user=root
password=123456
driver=com.mysql.cj.jdbc.Driver
数据库语句
CREATE TABLE USER(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(32),
PASSWORD VARCHAR(32)
);
INSERT USER VALUE (NULL,"joune","123456");
SELECT * FROM USER;
加载驱动与释放资源
package JDBC_test;
import java.io.FileReader;
import java.net.URL;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String driver;
static {
try {
Properties pro = new Properties();
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
//创建获取文件地址类
URL resource = classLoader.getResource("jdbc.properties");
//获取指定文件
String path = resource.getPath();
//获取指定的文件绝对路径
pro.load(new FileReader(path));
//加载驱动
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
driver = pro.getProperty("driver");
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void release(Connection conn, Statement statement) {
if (conn != null) {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
public static void release2(ResultSet rs, Connection conn, Statement statement) {
if (conn != null) {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(rs!=null){
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url,user,password);
}
}