JDBC案列
JDBC的编程步骤
- 第一步:注册驱动(告诉Java程序,即将要连接那个品牌的数据库)
- 第二步:获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完后一定要关闭)
- 第三步:获取数据库操作对象(专门执行sql语句的对象)
- 第四步:执行SQL语句(DQL DML ...)
- 第五步:处理查询结果集(只有第四步执行select语句时,才会执行第五步)
PreparedStatement相比相对于Statement的优点
- PreparedStatement有助于防止SQL注入攻击,因它会自动对特殊字符转义;
- PreparedStatement可以用来进行动态查询;
- PreparedStatement执行更快。
- 使用PreparedStatement的setter方法更容易写出面向对象的代码,而Statement的话,我们得拼接字符串来生成查询语句,如果参数过多得情况下,字符串拼接容易出错。
- 在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不要使用Statement.
案列sql版的判断登录
Connection conn = null; PreparedStatement psm = null; ResultSet rs =null; try{ //注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //建立连接 String url = "jdbc:mysql://127.0.0.1:3306/girls?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=false"; conn = DriverManager.getConnection(url,"root","panther9985"); //生成执行对象 //Statement stam = conn.createStatement(); psm = conn.prepareStatement("?"); //写sql语句执行 String sql = "select * from user"; //接受sql执行的语句 rs =psm.executeQuery(sql); String[] number = new String[3]; String[] password = new String[3]; int i=0; while(rs.next()){ number[i] = rs.getString(2); password[i] = rs.getString(3); i++; } Scanner sc = new Scanner(System.in); for(int j =0; j < 5; j++){ System.out.println("请输入账号"); String UserNumber =sc.nextLine(); System.out.println("请输入密码"); String UserPassword = sc.nextLine(); for(int k =0; k < 3; k++){ if(UserNumber.equals(number[k])&&UserPassword.equals(password[k])){ System.out.println("登录成功"); return; }else if(UserNumber.equals(number[k])){ System.out.println("密码输入错误"); }else if(UserPassword.equals(password[k])){ System.out.println("账号不存在"); break; }else{ System.out.println("输入错误"); break; } } System.out.println("还剩"+(4-j)+"次机会"); } }catch (Exception e){ e.printStackTrace(); }finally { assert rs != null; rs.close(); psm.close(); conn.close(); }

浙公网安备 33010602011771号