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 ...
随机推荐
- php 采集爬取单个淘宝商品描述,商品属性
下载链接:https://download.csdn.net/download/a724008158/10723448 效果图:
- Golang实现冒泡排序法
关于冒泡排序的原理请看本博客这篇文章冒泡排序法原理讲解及PHP代码示例 //代码 package main import ( "fmt" ) func main() { //定义一 ...
- flask自动代码自动补全
编写py文件时,无法补全: 在app对象后面添加:# type:Flask app=Flask(__name__) # type:Flask from flask import Flask, fl ...
- fjwc2019 D1T3 不同的缩写(dinic+trie+dfs)
#180. 「2019冬令营提高组」不同的缩写 乍看之下没有什么好的方法鸭.......于是考虑暴力. 长度?二分似乎可行. 于是我们二分最长子串的长度(设为$len$),蓝后暴力查找. 先在每个串内 ...
- socket编程-阻塞和非阻塞
转自:https://www.cnblogs.com/sunziying/p/6501045.html 建立连接 阻塞方式下,connect首先发送SYN请求道服务器,当客户端收到服务器返回的SYN的 ...
- docker 初步使用
CentOS Linux release 7.2.1511 Docker version 17.03.1-ce 安装与启动 yum直接安装的docker版本较低,推荐这样安装: # 官方,可能网络连不 ...
- Codeforces Round #479 (Div. 3)题解
CF首次推出div3给我这种辣鸡做,当然得写份博客纪念下 A. Wrong Subtraction time limit per test 1 second memory limit per test ...
- bzoj 2084 Antisymmetry - Manacher
题目传送门 需要高级权限的传送门 题目大意 对于一个01字符串,如果将这个字符串0和1取反后,再将整个串反过来和原串一样,就称作“反对称”字符串. 问给定长度为$n$的一个01串有多少个子串是反对称的 ...
- bzoj 2527 Meteors - 整体二分 - 树状数组
Description Byteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby gala ...
- QT笔记之内存管理
转载:https://blog.csdn.net/myjqc/article/details/8569196 (链接错误解决办法) 我们都知道在C++中,new和delete是成对出现的,那么在QT中 ...