java JDBC 的使用总结

一、最原始的使用方式:

  1、连接工具类:

      抽取工具类:

          1.创建一个类,并将其构造方法私有化

2.准备一个空该类的对象,用private修饰

3.向外界提供一个可以获取到该类对象的方法 getIns()(ps:该方法要用static修饰)

4.将加载驱动的代码放到 getIns()中

5.在该类中创建一个可以获得链接对象一个公共的方法

6.在该类中创建一个关闭资源的方法(对于每一个资源的非空判断 需要使用try catch finally结构)

抽取配置文件 解决硬编码:

1.准备一个叫db.properties的普通file文件,并将连接数据库用到的相关属性用key value的形式写进来

2.在工具类中读取资源文件调用java自带的工具类 Properties prop=new Properties();
加载资源文件 prop.load(Thread.currentThread().getClassContextLoader().getResourceAsStream("db.properties"));
获取资源文件中的值 prop.getProperty("对应的key")

代码:

  工具类:

package cn.xx.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

public class JdbcUtil {
    //私有化构造方法
    private JdbcUtil(){}
    //准备一个对象
    private static JdbcUtil ins;
    //向外界提供一个公共的可获取该类对象方法
    private static  Properties prop=new Properties();
    public static JdbcUtil getIns(){
        try {
            prop.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
            Class.forName(prop.getProperty("driverClassName"));
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if (ins==null) {
            ins=new JdbcUtil();
        }
        return ins;
    }

    public Connection getConn(){
        Connection conn=null;
        try {
            conn = DriverManager.getConnection(prop.getProperty("url"), prop.getProperty("username"), prop.getProperty("password"));
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return conn;
    }

    public void close(ResultSet rs,PreparedStatement pst,Connection conn){
        try {
            if (rs!=null) {
                rs.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                if (pst!=null) {
                    pst.close();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                try {
                    if (conn!=null) {
                        conn.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}

      数据库配置文件:db.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///....
username=....
password=....

2、在Dao层调用工具类,实现数据操作,下面以查询操作为例:

  

package cn.xx.dao.impl;

import java.sql.*;

import cn.xx.dao.UserDao;
import cn.xx.domain.User;
import cn.xx.utils.JdbcUtil;

public class UserDaoImpl implements UserDao{

    @Override
    public User checkUser(String name, String password) {
        Connection conn = JdbcUtil.getIns().getConn();  //获取连接对象
        User user = null;
        String sql = "select * from t_user where name=? and password=?";  //查询语句,其中?为占位符
        try {
            PreparedStatement pst = conn.prepareStatement(sql);  //预编译sql语句
            pst.setString(1, name);  //给占位符--?赋值
            pst.setString(2,password);
            ResultSet rs = pst.executeQuery();   //查询结果集
            while(rs.next()){       //遍历查询结果
                user = new User();    //封装结果集
                user.setName(rs.getString("name"));
                user.setPassword(rs.getString("password"));
                user.setId(rs.getLong("id"));
            }
            JdbcUtil.getIns().close(rs, pst, conn);    //关闭数据连接
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return user;
    }

}

二、在Spring框架中,使用JDBC,可以在配置文件中写入数据库的连接配置,然后通过实例化这个bean,再调用jdk已经封装了的类(类似于以上方法)----QueryRunner类,将实例化的bean传入,这个类中封装了数据库的连接方法、数据的操作方法等所需要的方法,因此比较简单快捷。

    代码实现:配置文件

<!-- 扫描包 -->
         <context:component-scan base-package="cn.xx"></context:component-scan>
         <util:properties id="conf" location="classpath:db.properties"></util:properties>
         <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
             <property name="driverClassName" value="#{conf.driverName}"></property>
             <property name="url" value="#{conf.url}"></property>
             <property name="username" value="#{conf.username}"></property>
             <property name="password" value="#{conf.password}"></property>
         </bean>

    数据库连接配置:db.properties同方法一

    dao层实现:

package cn.xx.dao.daoimpl;

import javax.annotation.Resource;
import javax.sql.DataSource;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.springframework.stereotype.Repository;
import cn.xx.bean.User;
import cn.xx.dao.UserDao;

@Repository("userDao")//依赖注入bean容器
public class UserDaoImpl implements UserDao {
    @Resource(name="dataSource")//通过注解,实例化DataSource Bean的类对象
    private DataSource dataSource;
    @Override
    public User login(String username, String password) throws Exception {
        String sql="select * from t_user where username=? and password=?";
        QueryRunner runner = new QueryRunner(dataSource);  //将数据库连接配置传入QueryRunner类以完成自动装配     return runner.query(sql, new BeanHandler<User>(User.class),username,password); } }   //返回查询结果

三、Mybatis和从c3p0:下次补充

ps:本文为作者原创,为学习笔记,如有雷同,纯属巧合,转载请说明来处,不得不做标识私自转载!

原文地址:https://www.cnblogs.com/stupidxixi/p/9700835.html

时间: 2024-10-14 02:17:55

java JDBC 的使用总结的相关文章

Java JDBC高级特性

1.JDBC批处理 实际开发中需要向数据库发送多条SQL语句,这时,如果逐条执行SQL语句,效率会很低,因此可以使用JDBC提供的批处理机制.Statement和PreparedStatemen都实现了批处理.测试表结构如下: Statement批处理程序示例 1 package server; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 impor

Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 及sql2008外围服务器

转载:Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 错误原因如下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot open connection at org.hibernate.exception.SQLStateConverter.convert(SQLStateConver

java jdbc 连接mysql数据库 实现增删改查

好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate.Mybatis. 但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的

第15篇-JAVA JDBC编程

第15篇-JAVA JDBC编程 每篇一句 :对于勇敢者,尝试是一条崭新的生活之路 初学心得: 但对于坎坷与泥泞,能以平常之心视之,就非常不容易 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-05-08| JAVA JDBC编程 ] 1.JDBC概述 通过使用JDBC API,Java程序可以非常方便地操作各种主流数据库,这是是Java语言的巨大魅力所在 由于Java语言的跨平台特性,所以使用JDBC API所编写的程序不仅可以实现跨数据库,还可以跨平台,具有非常优秀的可移植性

java JDBC 数据库链接

1.准备环境搭建: myeclipse,sql2005,jdbc. 2.都下载完之后开始进行安装 ,前两个是属于数据库软件,正常安装即可(注意数据库登陆不要使用windows验证) <1> 将JDBC解压缩到任意位置,比如解压到C盘program files下面,并在安装目录里找到sqljdbc.jar文件,得到其路径开始配置环境变量 在环境变量classpath 后面追加 C:\Program Files\Microsoft SQL Server2005 JDBC Driver\sqljdb

java jdbc操作SQLServer数据库

public static void main(String args[]){         System.out.println(321);         PreparedStatement ps = null;         ResultSet rs = null;         Connection ct = null;         try{             Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDri

java jdbc操作mysql

import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet; public class test {    public static final String DBDRIVER = "com.mysql.jdbc.Driver";    // 定义MySQL数据库的连接地址    public static fi

Java JDBC批处理插入数据操作

在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据.此外,我们将努力探索一些场景,如在内存不足时正常运行,以及如何优化批量操作. 首先,使用Java JDBC基本的API批量插入数据到数据库中. Simple Batch - 简单批处理    我把它叫做简单批处理.要求很简单,执行批量插入列表,而不是为每个INSERT语句每次提交数据库,我们将使用JDBC批处理操作和优化性能. 想想一下下面的代码: Bad

Java JDBC数据库链接

好久没有编写有关数据库应用程序啦,这里回顾一下java JDBC. 1.使用Java JDBC操作数据库一般需要6步: (1)建立JDBC桥接器,加载数据库驱动: (2)连接数据库,获得Connection对象(使用数据库连接地址,用户名,密码): (3)获得数据库Statement对象: (4)执行数据库操作: (5)读取结果: (6)关闭数据库连接: 2.使用Java JDBC操作数据库(mysql)代码: 连接mysql数据库,需要导入mysql数据库jar包,本代码使用mysql-con

java jdbc 连接 mysql 数据库, mysql 实现 查询 指定行

java jdbc 连接数据库是入门级的数据库实验,之所以在这里把代码贴出来 是为了 方便以后阅读. package com; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class DbStoreHelper { private String insert_sql; privat