JDBC的通用查询的方法
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的通用查询的方法的更多相关文章
- jdbc调用存储过程的方法
----------------------------jdbc调用存储过程的方法---------------------------------------------------private ...
- 三种JDBC批量插入编程方法的比较
JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等. 我用Mysql 5.1.5的JDBC driver 分别对三种比较常用的方法做了测试 方法一,使用PreparedStat ...
- 封装JDBC操作数据库的方法
自己动手封装java操作数据库的方法: 一:目录结构 二:所需依赖的第三方jar包 这里只需引入mysql-connector-java-5.1.8-bin.jar,mysql数据库驱动jar包 三: ...
- jdbc调试sql语句方法
在main命令行输入三个参数到oracle 的 dept2表(自己建的 和dept一样(deptno,dname,loc)),插入到数据库中去.通过本例子,学习在java里调试sql的方法. 写完sq ...
- DOMINO的JDBC和ODBC连接方法
利用ODBC实现Domino和关系数据库的互操作 Lotus Domino是当今办公自动化系统的主流开发平台之一,Domino自带一个非关系型数据库–文档型数据库,而目前大部分企业的信息都储存在 ...
- Mysql学习之十二:JDBC连接数据库之DriverManager方法
JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包括7个步骤: 1.载入JDBC驱动程序: 在连接数据库之前.首先要载入想要连接的数据库的驱动到JVM(Java虚拟机). 这通过java.l ...
- jdbc加载驱动方法
1.Class.forName("com.mysql.jdbc.Driver"); 2. DriverManager.registerDriver(new com.mysql.jd ...
- java篇之JDBC原理和使用方法
JDBC学过但又属于很容易忘记的那种,每次要用到,都要看下连接模式.每次找又很费时间,总之好麻烦呀呀呀,所以写篇博客,总结下原理和常用接口,要是又忘了可以直接来博客上看,嘿嘿. 一.什么是JDBC 1 ...
- 错误:“Cannot load JDBC driver class 'com.mysql.jdbc.Driver”的解决方法
“Cannot load JDBC driver class 'com.mysql.jdbc.Driver ” 表示没有JDBC连接MySql的驱动包,因此需要手动添加驱动包到WEB-INF目录下的l ...
随机推荐
- 对gulp的理解和使用(一)
说的gulp,到底是什么?用来做什么的? 以前并没有想过这个问题,拿到公司的项目脚手架就开始做事情了.现在专门来总结一下. gulp干什么的呢? gulp是node中的一种代码构建工具,还有就是项目自 ...
- ES6知识整理(5)--对象的扩展
个人开这个公众号的初心是为了积累知识,因此并没有做什么推广,再说自己也不知道怎么推广,推广之后又能干些什么.已经将近10天没发文章了,虽然每天都加班,但也不会一点时间都没有,有时还是会懒癌发作不想学习 ...
- Linux内核启动流程与模块机制
本文旨在简单的介绍一下Linux的启动流程与模块机制: Linux启动的C入口位于/Linux.2.6.22.6/init/main.c::start_kernel() 下图简要的描述了一下内核初始化 ...
- centos install go
https://golang.org/doc/install 一键安装 https://jamesnbr.wordpress.com/2017/10/18/golang-1-9-1-install-o ...
- metasploit(MSF)对windows的ms17-010漏洞利用
picture 配置exploit msf > use exploit/windows/smb/ms17_010_eternalblue msf exploit(windows/smb/ms17 ...
- 20145212 罗天晨 《网络对抗》Exp3 Advanced 恶意代码伪装技术实践
恶意代码伪装技术实践 木马化正常软件. 啊哈--原本以为很复杂--然后我看了一下蔡野同学的博客,发现原理竟然如此简单-- 对原先生成病毒的代码稍作修改: 于是--把生成的后门软件改成骗人的名字:这里改 ...
- QML手动连接信号槽【Connections】
1.使用Connections import QtQuick 2.6 import QtQuick.Window 2.2 import QtQuick.Controls 1.4 Window { vi ...
- python --- 18 类与类之间的关系, 特殊成员
类与类之间的关系 一.依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作 随时可以更换另外一个东西来完成此操作 此时的关系是最轻的. 二.关联关系(组合关系,聚合关系) 1.一对 ...
- 启动maven的web项目
一.可以通过在pom中配置tomcat插件. 首先要确保你的仓库里有这个插件,然后按如下配置. <build> <plugins> <!-- 配置Tomcat插件 --& ...
- 我为什么选择Go语言(Golang)
作为一个以开发为生的程序员,在我心目中编程语言如同战士手里的武器,好与不好主要看使用的人是否趁手.是否适合,没有绝对的高低之分. 从2013年起,学习并使用Golang已经有4年时间了,我想叙述一下我 ...