Java登录连接数据库验证码,连接数据库通过console实现简单的java登录操作

SQL注入概念

SQL语句编译时无法区分程序传入的值和SQL本身的关键字导致SQL语义改变。

改进方法:使用PreparedStatement接口代替Statement接口。

实现原理:调用连接对象的prepareStatement方法,对SQL语句框架进行编译,再对SQL语句中的占位符进行传值。

两种接口对比:PreparedStatement在SQL操作时性能更优,进行多次值不同、SQL框架相同的SQL命令时,只需要编译一次,而Statement要多次编译。

注意事项:虽然PreparedStatement接口使数据的安全性高于Statement,但特定的业务需要使用SQL注入。

JDBC连接数据库的六个步骤

注册驱动

Class.forName("com.mysql.jdbc.Driver");

复制代码

ref 1. forName方法会执行类的静态代码块

static {

try {

DriverManager.registerDriver(new Driver());

} catch (SQLException var1) {

throw new RuntimeException("Can't register driver!");

}

}

复制代码获取连接

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/login?useSSL=false", "root", "root");

复制代码获取数据库操作对象

String sql = "select * from t_user where loginName= ? and loginPwd=?";

PreparedStatement ps = conn.prepareStatement(sql);

复制代码SQL操作

ps.setString(1,userLoginInfo.get("loginName"));

ps.setString(2,userLoginInfo.get("loginPwd"));

复制代码处理结果集

ResultSet rs = ps.executeQuery();

if (rs.next()) {

boolean isLogin = true;

}

复制代码释放资源

rs.close();

ps.close();

conn.close();

复制代码

Tips: 异常处理语句没有写入

ref 2. loginName和loginPwd用 HashMap存储。HashMap的底层是哈希表,哈希表是一个数组,数组元素是链表。

Map常用操作:

map.put(key,value);

map.containsKey();

map.containsValue();

map.get(key);

map.replace(key,value);

map.remove(key,value);

map.remove(key)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值