使用preparedStatement对象操作sql语句
实现登陆的功能
编写代码
import java.sql.*;
import java.util.Scanner;
public class Test10 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取连接对象
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbhui", "root", "root123");
// 构建sql语句。创建一个带有占位符的语句,后面可以填入数据的
// 把语句中的动态的部分用?代替 连单引号一起
String sql = "SELECT * FROM usertable WHERE sname=? AND spwd=?";
// 获得preparedStatement对象
PreparedStatement preparedStatement = connection.prepareStatement(sql);
// 往占位的?中填入数据
// 第一个问号的位置是1,根据位置填入数据
// 先从键盘接收数据,然后往问号占位符里填入数据
// 新建一个scanner对象
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = scanner.next();
System.out.println("请输入密码:");
String password = scanner.next();
// 开始填?
preparedStatement.setString(1, username);
preparedStatement.setString(2, password);
// 打印查看一下效果
// 引号被转义,失去了功效
System.out.println(preparedStatement);
// 利用ps对象执行sql语句
ResultSet resultSet = preparedStatement.executeQuery();
// 处理结果
// 如果有查询到结果,就成功,否则就是失败的
if(resultSet.next()){
System.out.println("登陆成功!");
}else {
System.out.println("登陆失败~~");
}
// 程序结束
System.out.println("game over");
}
}
效果
进行sql注入式的登陆
preparedStatement对象的作用- 动态参数
- 防止sql注入
- 预编译,提高效率
课堂添加。。。