首页 > 数据库技术 > 详细

JDBC笔记

时间:2018-11-08 19:33:07      阅读:171      评论:0      收藏:0      [点我收藏+]

JDBC
概念:java数据库连接(java语言操作数据库)
原理:java语言 <--> jdbc <--> jdbc实现类(数据库驱动) <--> 数据库
应用:
1.导入jar包。
(1)复制mysql-connector-java-5.1.37-bin.jar到lib文件夹下
(2)右键 --> Add as library

2.注册驱动:告诉程序该使用哪个数据库驱动
Class.forName("com.mysql.jdbc.Driver");
Driver类加载时会执行静态代码块DriverManager.registerDriver(new Driver());
注:mysql5以后可以省略注册驱动这一步

3.获取连接对象。
Connection connection = DriverManager.getConnection(url,username,password);
url写法:jdbc:mysql://ip地址:端口号/库名 (localhost:3306可以省略)

Connection 对象的作用:(1)获取执行sql语句的对象
(2)管理事务
A.开启事务(关闭自动提交):connection.setAutoCommit(false);
B.提交事务: connection.commit();
C.回滚: connection.rollback();
4.定义sql。
5.获取执行sql语句的对象。
Statement statement = connection.createStatement();

6.执行sql语句。
(1)execute(sql):可以执行任意sql,不常用!
(2)executeUpdate(sql):执行DML、DDL语句,返回值是影响的行数。
(3)executeQuery(sql):执行DQL语句,返回值是结果集。

7.处理结果。
ResultSet是一张二维的表格。内部有一个游标,默认位置在第一行上放。
next():把游标向下移动一行。返回值:是否能向下移动。
getXXX():从一条结果中获取一个字段的值。

8.释放资源。
resultSet.close();
statement.close();
connection.close();
注意:进行非空判断!!!


预编译:先把sql语句模板发送给数据库,数据库进行编译和校验,执行时至于要把参数传递过去即可。
真正执行sql语句时不需要进行再次校验和编译,可以直接执行。

// 向数据库发送sql模板,数据库验证sql语句并编译
statement = connection.prepareStatement(sql);

// 向数据库发送参数,数据库执行查询
statement.setInt(1,3);
statement.setString(2,"feiyangyang");
statement.setInt(3,6);
statement.executeUpdate();

预编译的好处:1、提高运行效率 2、防止sql注入 3、提高代码的可读性和可维护性。

连接池:
1.普通连接的局限性:
普通连接的步骤:
A.将Connection对象加载到内存中
B.验证数据库用户名密码(0.05s~1s)
C.向数据库要一个连接
D.操作完成后断开数据库连接
问题: (1)大量访问数据库的操作,会频繁进行连接操作,占用很多系统资源。
(2)无法控制创建的连接对象数,资源会被随意分配。
(3)每次连接用完后都需要手动断开,如果程序异常未断开,将会一直占用数据库资源。
2.数据库连接池:
为数据库建立一个容器,预先在容器中放入一定数量的连接,当需要连接时,只需要从容器中取出一个,
当使用完毕后再放回去。
连接池负责分配,管理,和释放数据库连接,允许应用程序重复使用一个现有的数据库连接,而不是新建一个。

C3P0:
(1)导入JAR包(两个)
(2)设置配置文件
(3)创建连接池对象 DataSource ds = new ComboPooledDataSource();
(4)获取连接 ds.getConnection()

Druid:
(1)导包(一个)
(2)设置配置文件
(3)加载配置文件
Properties properties = new Properties();
InputStream is = DruidTest.class.getClassLoader().getResourceAsStream("druid.properties");
properties.load(is);
(4)创建连接池对象
DruidDataSourceFactory.createDataSource(properties)
(5)获取连接

JDBCTemplete:
(1)导包(5个)
(2)创建JDBCTemplete对象
(3)调用方法
update():执行dml语句。
queryForMap:将查询结果封装为Map,key:列名。value:值。结果集只能为一个。
queryForList:将查询结果封装为Map类型的List,map中的key是列名,value是值。
query:将查询结果封装为List,list中存放的是JAVABean对象。
queryForObject(sql,结果java类.class):一般用于聚合函数的查询

 

JDBC笔记

原文:https://www.cnblogs.com/aniymx/p/9931322.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!