java数据库操作(增删改查CRUD)

首先说明,在实际生产环境中,以下所介绍的技术可以借用一些开源框架实现,例如springmybatis等。

一、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注入式攻击,而且可以将GrantDeny以及Revoke权限应用于存储过程。

2)怎么使用存储过程?



五、对象关系映射ORM

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值