为了账号安全,请及时绑定邮箱和手机立即绑定

JDBC的通用查询的方法

标签:
Java

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);
}
}

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消