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. java基础之包装类型

    包装类型引入该类型的原因:      因为基本数据类型不具备对象的特性,不能调用方法,所以有时需要将其转换为包装类. 包装类型有两大类方法:      1.将本类型和其它基本类型进行转换方法.    ...

  2. Eloquent JavaScript #06# class

    索引 Notes this Prototype 类 class符号 覆盖派生属性 Maps Symbols iterator接口 Getters, setters, and statics 继承 in ...

  3. apache编译安装php后需要注意以下配置

    安装后, 编辑apache配置文件 vi /usr/local/apache2/conf/httpd.conf 可以看到 LoadModule php7_module modules/libphp7. ...

  4. javascript 与 PHP 通信加密,使用AES 128 CBC no padding,以及ios,java,c#文章例子

    运行环境 php7.0 不适用于 php7.0以上版本,因为mcrypt_encrypt()函数已删除 为何要采用 no padding 这种形式: AES加密如果原输入数据不够16字节的整数位,就要 ...

  5. maven maven.compiler.source和maven.compiler.target的坑

    最近建议产品组把jdk 1.7升级到1.8,昨晚开发报了个问题过来,说maven.compiler.source和maven.compiler.target改成1.8之后,编译出来的代码还是1.7,如 ...

  6. java常用类-StringBuffer,Integer,Character

    * StringBuffer: * 线程安全的可变字符串. * * StringBuffer和String的区别? * 前者长度和内容可变,后者不可变. * 如果使用前者做字符串的拼接,不会浪费太多的 ...

  7. centos6.9 svn提交更新到网站根目录

    一.首先创建网站根目录 ~] # mkdir -pv /export/home/cms/www_dyrs ~] # svn co svn://127.0.0.1/svn1 /export/home/c ...

  8. 如何在Framework中读取bundle中的Res

    前因: 因为公司上架前后的原因,外围的平台层部分提前上线,而我做的功能部分需要晚一些上线,是单独的一个工程在其他仓库开发. 我的资源文件放在Bundle中.合到主工程中,资源文件不用改,直接拖进去.倒 ...

  9. 如何开启Intel HAXM功能

    1. 启用BIOS中的Intel(R) Virtualization Technology选项 2.设置成功后,在控制台中输入sc query intelhaxm.出现下图即为成功 3. 启动andr ...

  10. loj SDOI2017数字表格

    目录 太才了 注意,错误 代码 太才了 \(\prod \limits_{i=1}^{n}\prod\limits_{j=1}^{m}f[gcd(i,j)]\) \(\prod\limits_{k=1 ...