PreparedStatement

  1.Why

  1):使用Statement需要进行拼写SQL语句,很辛苦,而且容易出错。

  2):使用Statement可以发生SQL注入。

  SQl注入:

  SQL注入是利用某些系统对用户输入的数据进行充分的检查

  而在用户输入数据中注入非法的SQL语句段或命令,从而充分利用系统的SQL引擎完成恶意行为的做法

  对于Java而言,要防范SQL注入,只要用PrepareStatement取代Statement就可以了

  String username = a'OR PASSWORD= ;

  String password = OR '1'='1;

  String sql=SELECT * FROM users WHERE username = '

  +username.+'AND

  +password='+passwoed+';

  System.out.println(sql);

  SELECT * FROM users WHERE username='a' OR PASSWORD='AND password = 'OR '1'='1'

  '

  2.What

  1):是Statement的子接口。

  2):可以传入带占位符的SQL语句,并且提供了补充占位符变量的方法

  3.How

  1):创建PreparedStatement

  String SQL=INSERT INTO examstudent VALUES(?,?,?,?,?,?,?);

  PrepareStatement ps=conn.prepareStatement(sql);

  2):调用PreparedStatement 的 setXxx(int index,Object val)设置占位符的值,index,值从1开始

  3):执行SQL语句 executeUpdate() 或 executeQuery()

  ResultSetMetaData

  1.Why:如果只有一个结果集,但不知道该结果集中有多少列,列的名字都是什么

  1):编写通用的查询方法是需要使用。

  publicTget(Classclazz,String sql.Object ...args)

  2.What:用于描述ResultSet的对象

  3.How

  1):得到ResultSetMetaData对象,调用ResultSet的getMetaData()方法

  ResultSetMetaData rsmd=resultSet.getMetaData();

  2):ResultSetMetaData有哪些好用的方法;

  int getColumnCount();结果集中的列数

  String getColumnLabel(int column);获取指定的列的列名,其中索引从1开始

  while(resultSet.next()){

  for(int i=0;irsmd.getcolumncount();i++){ p=

  String columnLable=rsmd.getColumnLabel(i+1);

  }

  }

JDBC的通用查询的方法的更多相关文章

  1. jdbc调用存储过程的方法

    ----------------------------jdbc调用存储过程的方法---------------------------------------------------private ...

  2. 三种JDBC批量插入编程方法的比较

    JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等. 我用Mysql 5.1.5的JDBC driver 分别对三种比较常用的方法做了测试 方法一,使用PreparedStat ...

  3. 封装JDBC操作数据库的方法

    自己动手封装java操作数据库的方法: 一:目录结构 二:所需依赖的第三方jar包 这里只需引入mysql-connector-java-5.1.8-bin.jar,mysql数据库驱动jar包 三: ...

  4. jdbc调试sql语句方法

    在main命令行输入三个参数到oracle 的 dept2表(自己建的 和dept一样(deptno,dname,loc)),插入到数据库中去.通过本例子,学习在java里调试sql的方法. 写完sq ...

  5. DOMINO的JDBC和ODBC连接方法

     利用ODBC实现Domino和关系数据库的互操作 Lotus Domino是当今办公自动化系统的主流开发平台之一,Domino自带一个非关系型数据库–文档型数据库,而目前大部分企业的信息都储存在 ...

  6. Mysql学习之十二:JDBC连接数据库之DriverManager方法

    JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包括7个步骤: 1.载入JDBC驱动程序: 在连接数据库之前.首先要载入想要连接的数据库的驱动到JVM(Java虚拟机). 这通过java.l ...

  7. jdbc加载驱动方法

    1.Class.forName("com.mysql.jdbc.Driver"); 2. DriverManager.registerDriver(new com.mysql.jd ...

  8. java篇之JDBC原理和使用方法

    JDBC学过但又属于很容易忘记的那种,每次要用到,都要看下连接模式.每次找又很费时间,总之好麻烦呀呀呀,所以写篇博客,总结下原理和常用接口,要是又忘了可以直接来博客上看,嘿嘿. 一.什么是JDBC 1 ...

  9. 错误:“Cannot load JDBC driver class 'com.mysql.jdbc.Driver”的解决方法

    “Cannot load JDBC driver class 'com.mysql.jdbc.Driver ” 表示没有JDBC连接MySql的驱动包,因此需要手动添加驱动包到WEB-INF目录下的l ...

随机推荐

  1. AspectJ框架基于注解的AOP实现

    AspectJ的AOP实现:有两种方式,一种是基于XML配置文件,一种是基于注解的,由于注解更为常用,这里 这里只针对注解来学习. ---------------------------------- ...

  2. 笔面试复习(spring常用.jar包/事务/控制反转/bean对象管理和创建/springMVC工作原理/sql查询)

    ###spring常用jar包1.spring.jar是包含有完整发布模块的单个jar包.2.org.springframework.aop包含在应用中使用Spring的AOP特性时所需要的类.3.o ...

  3. centos 内存清理

    在清理前内存使用情况 free -m 用以下命令清理内存 echo 1 > /proc/sys/vm/drop_caches 清理后内存使用情况再用以下命令看看. free –m 多出很多内存了 ...

  4. 新增async

    import asyncio from threading import Thread import time now = lambda: time.time() print('start',now( ...

  5. P1288 取数游戏II

    luogu原题 最近刚学了博弈论,拿来练练手qwq 其实和数值的大小并没有关系 我们用N/P态来表示必胜/必败状态 先在草稿纸上探究硬币♦在最左侧(其实左右侧是等价的)的一条长链的N/P态,设链长为n ...

  6. Spring Boot(一):入门篇

    Spring Boot(一):入门篇 一.Spring Boot介绍 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程. 该框架 ...

  7. 3、pandas的loc和iloc数据筛选

    选择列: 选择一列: 选择多列(选择的内容变成list,也就是要两个方括号): 选择一行或多行(loc函数): 选择连续的行(以索引标签为选择参数): 选择非连续的行(以索引标签为选择参数): 选择包 ...

  8. python,pycharm安装

    下载python地址:https://www.python.org/downloads/release/python-371/ 安装python ***python安装目录下的scripts加入环境变 ...

  9. opencv学习之路(6)、鼠标截图,滑动条播放视频

    一.鼠标截图 #include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespa ...

  10. opencv学习之路(3)、批量读取图片、视频分解、视频合成

    一.批量有序读取图片 #include<opencv2/opencv.hpp> using namespace cv; void main() { //批量读取图片(有序) ]; ]; M ...