首页 > 其他分享 >JDBC学习日志四,PreparedStatement

JDBC学习日志四,PreparedStatement

时间:2023-05-15 12:12:24浏览次数:62  
标签:JDBC setString resultSet st PreparedStatement sql println 日志 password

PreparedStatement可以防止sql注入问题,效率更高

先进行预编译sql,将要设置的字段值使用占位符

本质:预编译会将传递进来的参数包裹成字符,而单引号会被转义字符转换为空内容,有效的防止sql注入的问题

CRUD--SELECT

 String sql = "select * from users where id=?";
             st = connection.prepareStatement(sql);//预编译语句
             st.setInt(1,14);
             ResultSet resultSet = st.executeQuery();
             while (resultSet.next()){
                 System.out.println(resultSet.getString("name"));
                 System.out.println(resultSet.getString("password"));
                 System.out.println(resultSet.getString("email"));
                 System.out.println(resultSet.getString("birthday"));
             }

CRUD--INSERT

 String sql = "insert into users(`name`,`password`,`email`,`birthday`) value (?,?,?,?)";
             st = connection.prepareStatement(sql);//预编译语句
             st.setString(1,"王丽萍");//传递参数
             st.setString(2,"wlp123");
             st.setString(3,"[email protected]");
             //获得时间戳 java.Date   再将时间戳转换为sql.Date下面的时间
             pst.setDate(4,new Date(new java.util.Date().getTime()));
             int i = st.executeUpdate();

CRUD--DELETE

String sql = "delete from users where id=?";
             st = connection.prepareStatement(sql);//预编译语句
             st.setInt(1, 8);//传递参数
             int i = st.executeUpdate();
             if (i > 0) {
                 System.out.println("删除成功");

CRUD--UPDATE

String sql = "update users set `name`=? ,`password` = ?where id=?";
             st = connection.prepareStatement(sql);//预编译语句
             st.setString(1,"李昂");
             st.setString(2,"[email protected]");
             st.setInt(3,6);
             int i = st.executeUpdate();

模拟登录测试

String sql = "select * from `users` where `name`=? and `password`=?";
             statement = connection.prepareStatement(sql);
             statement.setString(1,username);
             statement.setString(2,password);
             resultSet = statement.executeQuery();

标签:JDBC,setString,resultSet,st,PreparedStatement,sql,println,日志,password
From: https://www.cnblogs.com/yzx-sir/p/17401423.html

相关文章

  • Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class
    报错代码Loadingclass`com.mysql.jdbc.Driver'.Thisisdeprecated.Thenewdriverclassis`com.mysql.cj.jdbc.Driver'.ThedriverisautomaticallyregisteredviatheSPIandmanualloadingofthedriverclassisgenerallyunnecessary.Exceptionin......
  • python-flask 技能点使用-03 请求钩子实现审计日志
    场景分析     使用pythonflask开发web系统,该系统是基于用户认证鉴权的web系统,系统中涉及到关键数据的操作,因此需要针对业务操作进行记录(也就是审计日志),便于管理员后期查看,在基于java的Spring系列框架中我们可以借助于AOP面向切面的编程来完成,在使用Flask时可以借助......
  • JDBC学习日志二,第一个JDBC程序与JDBC对象解释
    第一步,创建user表,测试数据库CREATEDATABASE`jdbcstudy`/*!40100DEFAULTCHARACTERSETutf8mb3*//*!80016DEFAULTENCRYPTION='N'*/usejdbcstudy;CREATETABLE`users`(`id`intNOTNULL,`NAME`varchar(40)DEFAULTNULL,`PASSWORD`varchar(40......
  • MySQL学习日志十四,数据库的备份
    数据库备份必要性1.保证重要数据不丢失2.数据转移3.MySQL数据库备份方法mysqldump备份工具1.数据库管理工具,如SQLyog2.直接拷贝数据库文件和相关配置文件3.mysqldump客户端作用:转储数据库搜集数据库进行备份将数据转移到另一个SQL服务器,不一定是MySQL服务器--导......
  • 小知识:设置archive_lag_target参数强制日志切换
    为客户测试一个ADG场景问题,发现测试环境的日志切换频率过低,总是需要定期手工切换,这非常影响测试心情。实际上,可以设置archive_lag_target参数强制日志切换。比如设置:altersystemsetarchive_lag_target=1800;这样即使库没任何压力,半小时也会切换一次日志。该设置同时也适......
  • MySQL学习日志十三,索引
    一、索引的作用1.提高查询速度2.确保数据的唯一性3.可以加速表和表之间的连接,实现表与表之间的参照完整性4.使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间5.全文检索字段进行搜索优化.二、分类1.主键索引(PrimaryKey)2.唯一索引(Unique)3.常规......
  • MySQL学习日志十二,事务
    一、事务要么都成功,要么都失败四个特性:原子性:不可再分割的工作单位,一个事务中要么都完成,要么都不完成一致性:从一致的状态转换到另一个一致的状态,事务前后的数据保持一致隔离性:屏蔽其他的事务,专注自己的事务,互不干扰持久性:存储在数据库的数据是永久的,事务一旦提交就不......
  • MySQL学习日志十一,常用函数,聚合函数及分组过滤,数据库级别的MD5加密
    点我跳转到菜鸟的函数总结在这里举几个例子吧--数学运算SELECTABS(-52)--取绝对值SELECTCEILING(5.4160)--向上取整SELECTFLOOR(4631.449613)--向下取整SELECTRAND()--返回一个0-1之间的随机数SELECTSIGN(-4510)--判断数字的正负,正数返回1,负数返回-1一堆......
  • MySQL学习日志十,子查询和嵌套查询
    子查询where(这个值是计算出来的)先执行where里面的语句,之后执行外面的语句本质:where里面嵌套一个子查询语句查询参加高等数学考试的学生(学号,姓名。科目编号,成绩),降序排列--方式一:连接查询SELECTs.studentno,studentname,r.subjectno,studentresultFROMstudentsINNER......
  • MySQL学习日志九,分页和排序
    一、排序查询orderby排序升序ASC降序DESC1.升序排序--查询参加考试的同学,包含的信息包括学号,姓名,科目名,分数(以分数升序展示)SELECTs.studentno,studentname,subjectname,studentresultFROMstudentsINNERJOINresultrONs.studentno=r.studentnoinner......