JDBC笔记

JDBC:是一种用于执行SQL语句的JAVA的API,可以为多种关系数据库提供统一访问
由一组由java语言编写的类和接口组成,是标准规范。

每个数据库厂商的驱动都必须遵循这个规范,表现为不同的数据库驱动。驱动是JDBC这个接口的实现。
1.注册驱动.(回想代码,关键字,Class)
2.获得连接.(Connection,获取连接,DriverManager)
3.获得语句执行平台(一般是preparestatement,高效、预编译)
4.执行sql语句(sql语句一定要写对,我去啊,)
5.处理结果(看执行的操作,是返回的影响行数还是结果集)
6.释放资源.(注意每个资源关的顺序,一般是最后开的最早关……)

增删改:用的是返回整型的executeUpdate()
查:用的是返回结果集的executeQuery()
如果想要查看获取的值的情况花功夫打印出来就行
诶,今天又犯了一个毛病,sql语句中含有中文的问号
问号跟下面的setXxx要一一匹配,不然特别容易哦出错。
sql语句中的占位符你也可以使用scanner动态获取键盘输入的值
巧妙利用字符数组,可以获取你想要的结果。

接下来就是优化的过程了,首先优化的是JDBCUtils工具类,因为每次增删改查都需要执行注册驱动等
那些操作,是在是太麻烦了,就写在一个工具类里面,每次调用工具类里面的静态方法获取连接,这样就
获得了第一次优化。其次优化的是properties,java中有一个类,里面有方法以流的方式读取配置文件
所以编写一个配置文件db.properties,里面存放的键值对,这个文件有着十分严格的语法要求,不能加啥子双引号、单引号,就是一个有等号的表达式,写着数据库里面的Driver、Url、User、Password这些信息,在你更换数据库工具(比如说换成SQLServer)、或者更换一个数据库(shop数据库)时就只需要改配置文件了,不需要去找代码改。

继续优化,阿帕奇这个伟大的公司又站出来了,调用commmons里面的成员DBUtils,它简化了JDBC开发。诶,总是做一些好事……DBUtils是JDBC数据库操作使用工具,小巧、简单实用。
比较重要的三个核心功能:
QueryRunner中提供对sql语句操作的API.
两个方法:
update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作
第三个放的是要存入的数据,进行了封装:

QueryRunner qr = new QueryRunner();
String sql = "INSERT INTO zhangwu(name,money,parent) VALUES(?,?,?)";
Object[] params = {"股票收入", 5500, "收入"};
Connection conn = JDBCUtils.getConnection();
int line = qr.update(conn,sql,params);// 用来完成表数据的增加、删除、更新操作
//结果集处理
System.out.println("line = " + line);

query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作
ResultSetHandler接口,用于定义select操作后,怎样封装结果集.
ResultSetHander是结果集处理类,ArrayHandler    将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
ArrayListHandler    将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
BeanHandler    将结果集中第一条记录封装到一个指定的javaBean中。
BeanListHandler    将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
ColumnListHandler    将结果集中指定的列的字段值,封装到一个List集合中
ScalarHandler    它是用于单数据。例如select count(*) from 表操作。
MapHandler    将结果集第一行封装到Map集合中,Key 列名, Value 该列数据
MapListHandler    将结果集第一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合
DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法
这部分对于自己来说也是十分新奇的,好东西谁不用,学的越多以后用的越好玩的越6,,以后翻看笔记时也会感慨万千吧。这次写笔记值看了一种。。留着慢慢看

再来优化,实际开发中,获得连接和释放资源都是非常消耗系统资源的两个过程,为了解决这个问题,通常采用连接池技术,来共享连接Connection,程序都是一步步优化而来的,不断优化,不断节省资源。省钱才是王道啊。close()方法并不是销毁连接,而是归还连接,要用时在池子中巴拉按揭取出来,不用时放回去。嗯?好像以前学流的时候学的缓冲技术啊,暂时性存储。常见的连接池DBCP,C3P0。学高深了就是钻到缓存去了,优化程序去了,呵。
public static final String DRIVER = "com.mysql.jdbc.Driver";
    public static final String URL = "jdbc:mysql://localhost:3306/daydb";
    public static final String USERNAME = "root";
    public static final String PASSWORD = "root";
    /*
     * 创建连接池BasicDataSource
     */
    public static BasicDataSource dataSource = new BasicDataSource();
    //静态代码块
    static {
        //对连接池对象 进行基本的配置
        dataSource.setDriverClassName(DRIVER); // 这是要连接的数据库的驱动
        dataSource.setUrl(URL); //指定要连接的数据库地址
        dataSource.setUsername(USERNAME); //指定要连接数据的用户名
        dataSource.setPassword(PASSWORD); //指定要连接数据的密码
    }
    /*
     * 返回连接池对象
     */
    public static DataSource getDataSource(){
        return dataSource;
    }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Day1–JDBC概述+JDBC完成CRUD+DAO设计 1.JDBC概述 1.1 什么是持久化(persistence): 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。 ​ 保存数据: ​ 内存中: 掉电之后,数据就没了. ​ 磁盘中: 掉电之后,数据依然存在. 大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。 持久化的主要应用是将内存中的数据存储在 关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。 JPA:JavaEE的规范,Java persistence api: Java的持久化API. Hibernate实现了该规范.(xml/注解) -------------------------------------------------------------------------------------------------------------------- 在Java中,数据库存取技术 只能通过JDBC 访问数据库: JDBC访问数据库的形式主要有两种: ​ 1).直接使用JDBC的API去访问数据库服务器(MySQL/Oracle). ​ 2).间接地使用JDBC的API去访问数据库服务器. ​ 第三方O/R Mapping工具,如Hibernate, MyBatis等.(底层依然是JDBC) ​ JDBC是java访问数据库的基石,其他技术都是对jdbc的封装. 1.2 JDBC(Java DataBase Connectivity): 是一种用于执行SQL语句的Java API(接口,类,方法),可以为多种关系数据库提供统一访问, 它由一组用Java语言编写的类和接口组成。 JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序. ​ JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。 JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统, 这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。 ​ 总结: JDBC本身是java连接数据库的一个标准,是进行数据库连接的抽象层,由java编写的一组类和接口组成,接口的实现由各个数据库厂商来完成. --------------------- 作者:故事我忘了i 来源:CSDN

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值