您的位置:首页 > 编程语言 > Java开发

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) 提供将连接放回连接池中方法

四、使用CablleStatement调用存储过程

1)为什么使用存储过程?
①重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
②减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
③安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
2)怎么使用存储过程?

五、对象关系映射ORM
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: