java数据库操作(增删改查CRUD)
2017-12-17 20:34
190 查看
首先说明,在实际生产环境中,以下所介绍的技术可以借用一些开源框架实现,例如spring,mybatis等。
一、1、什么是JDBC? Java语言访问数据库的一种规范,是一套API。
二、preparedstatement(生产环境用preparedstatement,仅测试时使用statement)
1) PreparedStatement可以写动态参数化的查询:
SELECT interest_rate FROM loan WHERE loan_type=?
2) PreparedStatement比 Statement 更快.
SQL语句会预编译在数据库系统中。执行计划同样会被缓存起来,它允许数据库做参数化查询。使用预处理语句比普通的查询更快,因为它做的工作更少(数据库对SQL语句的分析,编译,优化已经在第一次查询前完成了)。
3)可以防止SQL注入式攻击
比如:某个网站的登录验证SQL查询代码为:
strSQL = "SELECT * FROM users WHERE name = '"+ userName +
"' and pw = '"+ passWord +"';"
恶意填入:userName = "1' OR '1'='1"; passWord ="1' OR '1'='1";
那么最终SQL语句变成了:strSQL ="SELECT * FROM users WHERE name = '1' OR '1'='1' and pw = '1' OR '1'='1';"实现无账号密码亦可登录网站。
三、数据库连接池
1)为什么要有连接池?
建立连接expensive,每次都得花费0.05s~1s的时间,频繁的连接势必占用很多的系统(网络、IO)资源。
2)数据库连接池的基本思想:就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。
3)怎么使用连接池?
① 创建ConnectionPool实例,并初始化创建10个连接,保存在Vector中(线程安全)
② 实现getConnection()从连接库中获取一个可用的连接
③ returnConnection(conn) 提供将连接放回连接池中方法
①重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
②减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
③安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
2)怎么使用存储过程?
五、对象关系映射ORM
一、1、什么是JDBC? Java语言访问数据库的一种规范,是一套API。
二、preparedstatement(生产环境用preparedstatement,仅测试时使用statement)
1) PreparedStatement可以写动态参数化的查询:
SELECT interest_rate FROM loan WHERE loan_type=?
2) PreparedStatement比 Statement 更快.
SQL语句会预编译在数据库系统中。执行计划同样会被缓存起来,它允许数据库做参数化查询。使用预处理语句比普通的查询更快,因为它做的工作更少(数据库对SQL语句的分析,编译,优化已经在第一次查询前完成了)。
3)可以防止SQL注入式攻击
比如:某个网站的登录验证SQL查询代码为:
strSQL = "SELECT * FROM users WHERE name = '"+ userName +
"' and pw = '"+ passWord +"';"
恶意填入:userName = "1' OR '1'='1"; passWord ="1' OR '1'='1";
那么最终SQL语句变成了:strSQL ="SELECT * FROM users WHERE name = '1' OR '1'='1' and pw = '1' OR '1'='1';"实现无账号密码亦可登录网站。
三、数据库连接池
1)为什么要有连接池?
建立连接expensive,每次都得花费0.05s~1s的时间,频繁的连接势必占用很多的系统(网络、IO)资源。
2)数据库连接池的基本思想:就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。
3)怎么使用连接池?
① 创建ConnectionPool实例,并初始化创建10个连接,保存在Vector中(线程安全)
② 实现getConnection()从连接库中获取一个可用的连接
③ returnConnection(conn) 提供将连接放回连接池中方法
四、使用CablleStatement调用存储过程
1)为什么使用存储过程?①重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
②减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
③安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
2)怎么使用存储过程?
五、对象关系映射ORM
相关文章推荐
- 基于Java的XML文件模拟数据库进行增删改查操作
- 数据库---简单的使用Java操作数据库增删改查
- JAVA之操作数据库增删改查-JDBC的使用
- java 操作mysql的创建数据库及数据的增删改查
- java实现mongo数据库的CRUD操作
- Java语句轻松实现与数据库MYSQL【本地数据库】的连接,和对数据库的增删改查操作
- java中如何操作数据库(增删改查)
- java 操作redis数据库增删该查
- 用 Java 对 hbase 进行CRUD增删改查操作
- 第三十八篇:JAVA访问数据库之增删改查(CRUD)
- java 操作mysql的创建数据库及数据的增删改查
- 简易的java操作数据库进行增删改查
- 【Java框架型项目从入门到装逼】第九节 - 数据库建表和CRUD操作
- java实现对HDFS增删改查(CRUD)等操作
- java操作Mogodb数据库,对数据库进行增删查改!
- 通过java对数据库的增删查修操作
- Java 8 Streams 中的数据库 CRUD 操作
- java操作数据库增删改查的小工具2--TxQueryRunner
- Java学习笔记——JDBC之与数据库MySQL的连接以及增删改查等操作
- java 操作mongodb的增删查改 crud