数据库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 条评论
登录 后参与评论

相关文章

来自专栏Java学习123

一个简单的拆分URL的小程序

3145
来自专栏源哥的专栏

在DWR中实现直接获取一个JAVA类的返回值

    DWR是Ajax的一个开源框架,可以很方便是实现调用远程Java类。但是,DWR只能采用回调函数的方法,在回调函数中获取返回值,然后进行处理。那么,到底...

472
来自专栏曾大稳的博客

jni基础

592
来自专栏向治洪

JNI动态注册native方法及JNI数据使用

前言 或许你知道了jni的简单调用,其实不算什么百度谷歌一大把,虽然这些jni绝大多数情况下都不会让我们安卓工程师来弄,毕竟还是有点难,但是我们还是得打破砂锅知...

1946
来自专栏栗霖积跬步之旅

创建Task的多种方法

Gradle的Project从本质上说只是含有多个Task的容器,一个Task与Ant的Target相似,表示一个逻辑上的执行单元。 我们可以通过多种方式定义T...

2766
来自专栏猿人谷

SpringMVC中利用@InitBinder来对页面数据进行解析绑定

在使用SpingMVC框架的项目中,经常会遇到页面某些数据类型是Date、Integer、Double等的数据要绑定到控制器的实体,或者控制器需要接受这些数据...

1865
来自专栏Java后端生活

JDBC(三)PreparedStatement

SQL 注入是利用某些系统没有对用户输入的数据进行充分的检查,而在用户输入数据中注入非法的 SQL 语句段或命令,从而利用系统的 SQL 引擎完成恶意行为的做法

551
来自专栏xingoo, 一个梦想做发明家的程序员

JSP 内置对象

  本篇继前两篇内置对象,继续记录JSP中的其他的内置对象:application,page,pageContext,config,exception   ap...

1817
来自专栏LanceToBigData

JavaWeb(二)cookie与session的应用

前言   前面讲了一堆虚的东西,所以这篇我们来介绍一下cookie和session的应用。 一、使用cookie记住用户名 1.1、思路介绍 ? 1.2、实现代...

2115
来自专栏闻道于事

JavaWeb(三)servlet

Servlet * 什么是Servlet 是运行在web服务器端的Java应用程序,它使用JAVA语言编写,具有Java语言的优点。与Java程序的区别:Ser...

3539

扫码关注云+社区