数据库JDBC的基本内容

JDBC

基本流程

  1. 首先向项目中导入jar包
  2. 创建如下代码
                Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/mybase";
            String username="root";
            String password="123";
            con = DriverManager.getConnection(url, username, password);
  1. 使用方法
        String sql = "select * from user where name=?";   // sql语句
        PreparedStatement stmt = connection.prepareStatement("");   // 预编译
        stmt.setString(1, "lll");  // 给?占位符赋值
        ResultSet result = stmt.executeQuery();   // 取得查询的结果集对象
        while(result.next()){  // 遍历结果集,如果结果集中没有对象的话result.next()会返回null
            String str = result.getString(1);  // 取出结果集中的对象(列,列名)
        }
        stmt.executeUpdate();   // 数据更新使用的方法
        
        connection.close();   // 关闭资源
        stmt.close();

加载properties配置文件

  • 将数据库的信息配置在properties中可以增加代码的灵活性,修改的时候不需要去改动代码.
  • 可以将properties文件放在src文件夹下面,这样编译完以后properties文件就会编译到bin文件夹中,可以通过类加载器获取.
  • InputStream in = JDBCUtilsConfig.class.getClassLoader().getResourceAsStream("database.properties");

JDBC工具类DBUtils

  • 封装了JDBC的操作,减少代码量

基本操作

  • 首选创建DBUtils对象,传递的参数为DateSource

private static QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());

  • 数据的更新操作, 可变参数的位置可以依次传递参数,也可以传递一个数组
  • qr.update(sql,Object... param)
  • DBUtils实现了查询结果自动封装到Bean Object List Map 操作,所以使得对数据库的操作变得更加简单

query( String sql, ResultSetHandler<T> rsh, Object... params) // query的构造函数,可以传递ResultSetHandler来实现查询结果的自动封装

  • 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集合

qr.query(conn, sql, new ArrayHandler(), params); // 然后返回值为对应的Handler返回的类型

连接池

实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采用连接池技术,来共享连接Connection。这样我们就不需要每次都创建连接、释放连接了,这些操作都交给了连接池,当需要使用Connection时候,可以直接从连接池中获取Connection,当我们用完了Connection时,调用close()方法把这个Connection放回到池中,减少了系统的开销.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏androidBlog

常用的自定义View例子三(MultiInterfaceView多界面处理)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details/...

441
来自专栏web前端教室

javascript 红皮高程(18)-- 布尔操作符

可算是把绕来绕去的二进制-位操作符,给学完了。至少我学到了十之八九,你呢,,, 接下来是布尔操作符,它一共有三个,非(NOT),与(AND),或(OR)。 1,...

1859
来自专栏Golang语言社区

GO语言标准错误处理机制error用法实例

本文实例讲述了GO语言标准错误处理机制error用法。分享给大家供大家参考。具体分析如下: 在 Golang 中,错误处理机制一般是函数返回时使用的,是对外的接...

3329
来自专栏Golang语言社区

【提高篇】GO语言标准错误处理机制error用法实例

本文实例讲述了GO语言标准错误处理机制error用法。分享给大家供大家参考。具体分析如下: 在 Golang 中,错误处理机制一般是函数返回时使用的,是对外的接...

34911
来自专栏机器学习从入门到成神

java.lang.StackOverflowError异常解决

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/articl...

1362
来自专栏向治洪

数据结构是哈希表(hashTable)

哈希表也称为散列表,是根据关键字值(key value)而直接进行访问的数据结构。也就是说,它通过把关键字值映射到一个位置来访问记录,以加快查找的速度。这个映...

19610
来自专栏Java开发

读取数据库时报java.sql.SQLException: 流已被关闭

使用Connection、Statement/PreparedStatement、ResultSet来取数据库信息:

702
来自专栏偏前端工程师的驿站

Java魔法堂:注释和注释模板

一、注释                                     1. 注释类型      [a]. 单行注释 // 单行注释 String ...

1906
来自专栏酷玩时刻

Java程序调用带参数的shell脚本返回值

首先来看看linux中shell变量($#,$@,$0,$1,$2)的含义解释 变量说明:

1064
来自专栏linux驱动个人学习

Linux内存描述之内存节点node--Linux内存管理(二)

这点前面是说的很明白了, NUMA结构下, 每个处理器CPU与一个本地内存直接相连, 而不同处理器之前则通过总线进行进一步的连接, 因此相对于任何一个CPU访问...

732

扫码关注云+社区