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. 龙珠超·布罗利【MGRT&幻之】【720P】剧场版

    [上传]龙珠超·布罗利[MGRT&幻之][720P]剧场版 这是一个,全新的“赛亚人”故事.“力量大会”之后,和平的地球.悟空了解到宇宙中还存在着自己未曾见过的强者,于是每天都为了变得更强而不 ...

  2. nGrinder Maven工程使用

    1:新建Maven groovy工程 2:SVN Checkout Maven工程 3:新建JUnit脚本,并运行,提示报错 java.lang.RuntimeException: Please ad ...

  3. The Architecture of Open Source Applications: Berkeley DB

    最近研究内存关系数据库的设计与实现,下面一篇为berkeley db原始两位作为的Berkeley DB设计回忆录: Conway's Law states that a design reflect ...

  4. python简说(十二)time模块

    1.时间戳 print(int(time.time())) 2.取当前格式化好的时间 time.strftime('%Y-%m-%d %H:%M:%S') 3.时间戳转为格式化好的时间 time1 = ...

  5. 2018-2019-2 《网络对抗技术》Exp4 恶意代码分析20165211

    目录 实践内容概述 实践目标 实践内容 实验问题回答 实践过程记录 系统运行监控 使用schtacks指令监控系统运行 使用sysmon工具监控系统运行 恶意软件分析 使用Virus Total分析恶 ...

  6. bzoj 3670 动物园 - kmp - 动态规划

    Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习 ...

  7. Selenium Webdriver弹出框的种种类型

    普通弹出框 div 一般这种 弹出框都属于dom的一部分,我们查看一下页面源码就可以定位到改弹出框了,然后定位下右上角的那个关闭, 这里有id,所以很方便通过 dr.findElement(By.id ...

  8. Django 中如何让外部访问本地的静态资源

    简单使用 在Django中打开一个入口,让别人可以访问media文件 在settings中配置 MEDIA_ROOT=os.path.join(BASE_DIR,'media') 在路由中配置 fro ...

  9. AndroidO Treble架构分析【转】

    本文转载自:https://blog.csdn.net/yangwen123/article/details/79835965 从AndroidO开始,google引入了Treble架构,目的是为了方 ...

  10. JMeter常用菜单以及设置

    如何清空View Results Tree 先选中目标view results tree,然后在菜单上选择Run-->Clear https://stackoverflow.com/questi ...