程序员与数据库打交道的JDBC知识概要
1.JDBC全称:Java database connectivity,Java数据库连接。
(1) JDBC是一种用于执行SQL语句的Java API,为多种关系数据库提供多种统一访问,由一组Java语言编写的类和接口组成。
(2) 程序员JDBC API程序可以访问所有的数据库。
(3) Java语言和JDBC结合,程序员不必为不同的平台写不同的应用程序,只需写一遍程序就可以使它在任意平台上运行。
(4) JDBC简单讲做三件事:与数据库建立连接,发送、处理数据库语句并处理结果。
3.加载Oracle的JDBC驱动程序
Class.forName(“Oracle.jdbc.driver.OracleDriver”)
4.execute、executeQuery、executeUpdate
executeQuery:返回结果集(ResultSet),通常用于select语句。
executeUpdate:返回此操作影响的行数(int),通常用于insert,update,delete语句。
execute返回Boolean值, 通常用于insert,update,delete语句。
5.ResultSet处理的典型代码:
while(rs.next()){
String ename = rs.getString(1);
int empno = rs.getInt(“empno”);
}
6.JDBC记载4大步骤
(1)加载一个Driver驱动;
(2)创建数据库连接(Connection)
(3)创建SQL命令发布器Statement,通过statement发送命令并得到结果。
(4)处理结果(select语句和resultset),处理完毕后关闭数据库资源。
7.SQL注入攻击
比如JDBC完成用户的登录功能
(1) SQL语句采用了字符串拼接技术String sql = “select * from t_user where userno= ‘”+userno+”’ and password =+upwd+”’”;
(2) 继而使用SQL命令发布器发送SQL命令并得到结果:
Stmt.executeQuery(sql);
(3) 如输入:userno = “ abc:,password =” abc ‘or’ 1’ = 1”;
于是上述SQL字符串就变为sql = “select * from t_user where userno =’ abc’ and password =’ abc’ ‘or’ 1’ = ‘ 1”;
此语句的用户名和密码并不正确,但是仍然能访问数据表,所以存在风险,这就是所谓的SQL注入攻击。
(4) 解决方案:采用statement的子接口PreparedStatement来实现。
*1.可读性强不繁琐
*2.安全
*3多次执行同一条SQL语句,效率高
例:
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try{
Class.forName(“oracle.jdbc.driver.OracleDriver”);
conn = DriverManager.getConnection(“jdbc:oracle:thin:@localhost:1521:orcl”,”scott”,”tiger”);
stmt = conn.createStatement();
String sql = “select * from emp”;
rs = stmt.executeQuery(sql);
最新文章
- ThinkPHP3.2.3整合smarty模板(一)
- iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值
- 好玩的Prim算法
- PHP函数——parse_ini_file() 函数
- 【MySQL】insert批量插入优化方案
- 求编译器中数的最值(c++)
- 为DEDE织梦添加XMl网站地图
- MySQL 复制+快照恢复误删除操作实验测试
- 如何在maven pom.xml文件中设置Java编译器版本
- 常用Linux命令笔记
- 给Mac的Dictionary添加其他原装词典
- eclipse安装其他颜色主题包
- 011 SpringSecurity的基本原理
- json模块和pickle模块(二十二)
- 【Java】 剑指offer(2) 不修改数组找出重复的数字
- _rate_charaters
- Jfinal QuartzPlugin 简单使用案例
- 用python处理文本,本地文件系统以及使用数据库的知识基础
- Activity的四大启动模式
- Upgrade to or Install Cinnamon 2.4 in Ubuntu
热门文章
- json简单案例
- 123467123456#1#-----com.twoapp.DaDiShuGame01--前拼后广--现实打地鼠游戏jiemei
- var和val的区别
- git的压缩原理;git的pack文件;git gc操作原理;Resolving deltas: 100% (2695/2695), done.做了什么
- Spring-boot内置的程序管理监控工具-Actuator
- 机器学习笔记——k-近邻算法(一)(摘抄于《机器学习实战》)
- 理解KNN算法中的k值-knn算法中的k到底指的是什么 ?
- thinkphp5 引用 phpass加密算法
- gcc 与g++的区别
- [转载]oracle xml操作