JDBC通用查询
来源:互联网 发布:网络升级改造方案 编辑:程序博客网 时间:2024/05/30 23:31
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):编写通用的查询方法是需要使用。
public<T> Tget(Class<T> clazz,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;i<rsmd.getColumnCount();i++){
String columnLable=rsmd.getColumnLabel(i+1);
}
}
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):编写通用的查询方法是需要使用。
public<T> Tget(Class<T> clazz,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;i<rsmd.getColumnCount();i++){
String columnLable=rsmd.getColumnLabel(i+1);
}
}
阅读全文
0 0
- JDBC 关于通用查询
- jdbc通用查询实例
- JDBC通用查询
- JDBC通用查询
- JDBC查询的通用方法
- JAVA(JDBC)通用查询
- JDBC查询表返回List通用方法
- java JDBC执行查询通用方法
- JDBC通用查询经典实例(应用)
- 项目需求实例(JDBC通用查询)
- 使用JDBC编写通用的查询方法
- JDBC(六) 编写通用的更新和查询方法
- JDBC:利用 ResultSetMetaData 和反射编写通用查询方法
- 利用反射实现JDBC的数据库通用查询方法
- jdbc查询的通用方法的简单版
- JDBC:利用反射及JDBC元数据编写通用的查询方法
- 通用查询
- 通用查询
- splay tree基础及其运用
- 有关ucosii中OSTCBY、OSTCBBitY、OSTCBX、OSTCBBitX的意义(我是菜鸟)
- 网址
- C#中的委托和事件(提及Observer设计模式)(转载)
- 51nod 1385 凑数字
- JDBC通用查询
- ESP8266开发环境、编译、烧录
- hh
- wifi热点的软路由
- 谈谈Android 6.0运行时权限理解
- 前端 输入一个年月日 判断是一年中的第几天
- STM32——同程序更换芯片时,需要修改的地方
- Android 文件存储路径的问题
- Spring Boot 详细日志配置