1.新建一个java项目:
(1) 在项目中建一个properties文件
#配置连接数据库信息(动态生效) 键值对的形式 写数据库连接信息
driverclass= com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db2019
username=root
password=sa123456
(2)新建一个JDBCUtil 类
package com.*;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/*
* jdbc连接管理工具类
* Statement对象进行创建对象
* 在项目中新建一个properties文件,进行相关配置信息的存储,方便程序后期配置信息 的变更(properties文件不会被编译)
*/
public class JdbcUtil {
static Connection conn =null; //连接数据库
static Statement state =null; //用于处理一条静态的sql语句并且进行相应的处理
static ResultSet rs =null;
static String driverclass = null;
static String url = null;
static String username = null;
static String password = null;
static {
//在静态块里面的内容会在程序找到函数的主入口之前提前读取,因此数据库的密码和用户名以及驱动之类的东西会提前预备好
Properties proper=new Properties();
try {
FileInputStream in =new FileInputStream("src/config.properties");
proper.load(in);
driverclass=proper.getProperty("driverclass");
url=proper.getProperty("url");
username=proper.getProperty("username");
password=proper.getProperty("password");
} catch (IOException e) {
e.printStackTrace();
System.out.println("此处有1异常!!!");
}
}
public static Connection getConn(){
Connection conn = null;
try {
conn = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
(3)写一个登录测试类
package com.*;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;
import com.cckj.jdbcs.JdbcUtil;
import com.mysql.jdbc.Connection;
/*
* 演示登录过程中,存在的sql注入问题
*/
public class Register0 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名");
String username = sc.nextLine();
System.out.println("请输入密码");
String password = sc.nextLine();
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
conn = (Connection) JdbcUtil.getConn();
st = conn.createStatement();
String sql = "select * from student where name='"+username+"' and password='"+password+"'";
rs = st.executeQuery(sql);
if(rs.next()){ //rs中有数据
System.out.println("登录成功");
}else{ // 用户名密码错误,没有查到数据
System.out.println("登录失败,用户名或密码有误");
}
}catch(Exception e){
e.printStackTrace();
}finally{
JdbcUtil.close(conn,st,rs);
}
}
}
(4)控制台输入万能密码测试效果
!!! 防止sql注入用 PreparedStatement 执行sql语句
!!! 或着 前端识别校验