java基于jdbc连接mysql数据库功能实例详解

本文实例讲述了java基于jdbc连接mysql数据库的方法。分享给大家供大家参考,具体如下:

一、JDBC简介

Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。它JDBC是面向关系型数据库的。

1、JDBC架构:

JDBC API支持两层和三层处理模型进行数据库访问,但在一般的JDBC体系结构由两层组成:

JDBC API: 提供了应用程序对JDBC的管理连接;

JDBC Driver API: 支持JDBC管理到驱动器连接;

JDBC API的使用驱动程序管理器和数据库特定的驱动程序提供透明的连接到异构数据库;

JDBC驱动程序管理器可确保正确的驱动程序来访问每个数据源,该驱动程序管理器能够支持连接到多个异构数据库的多个并发的驱动程序;

以下是结构图,它显示了驱动程序管理器方面的JDBC驱动程序和Java应用程序的位置:

2、常见的JDBC组件:

JDBC API提供了以下接口和类:

DriverManager: 这个类管理数据库驱动程序的列表,内容是否符合从Java应用程序使用的通信子协议正确的数据库驱动程序的连接请求,识别JDBC在一定子协议的第一个驱动器将被用来建立数据库连接;

Driver: 此接口处理与数据库服务器通信,很少直接与驱动程序对象,相反,使用DriverManager中的对象,它管理此类型的对象,它也抽象与驱动程序对象工作相关的详细信息;

Connection : 此接口与接触数据库的所有方法,连接对象表示通信上下文,即,与数据库中的所有的通信是通过唯一的连接对象;

Statement : 可以使用这个接口创建的对象的SQL语句提交到数据库,一些派生的接口接受除执行存储过程的参数;

ResultSet: 这些对象保存从数据库后,执行使用Statement对象的SQL查询中检索数据,它作为一个迭代器,让您可以通过移动它的数据;

SQLException: 这个类处理发生在一个数据库应用程序的任何错误.

二、连接JDBC需要掌握的基本知识

1、数据库的基本操作,

eg:Mysql的安装和基本操作(insert,delete,update,query)

2、java开发工具的使用,

eg:Eclipse/MyEclipse (包括mysql-connector-java-5.0.3-bin.jar的导入)

三、JDBC的连接及代码演示

1、JDBC连接工具类

1)、Configuration.java:可以从.xml文件中连接数据库的配置信息,需要引入dom4j-1.6.1.jar包

package cn.java.jdbc;
import java.io.InputStream;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Configuration {
  private String url;
  private String driver;
  private String username;
  private String password;
  public Configuration() {
  }
  public Configuration(String url, String driver, String username,
      String password) {
    super();
    this.url = url;
    this.driver = driver;
    this.username = username;
    this.password = password;
  }
  public static Configuration getConfigure()
  {
    try {
      InputStream in = Configuration.class.getResourceAsStream("/db.xml");
      if (null!=in) {
        return load(in);
      }
      return null;
    } catch (DocumentException e) {
      e.printStackTrace();
      return null;
    }
  }
  private static Configuration load(InputStream in) throws DocumentException {
    SAXReader reader = new SAXReader();
    Document doc = reader.read(in);
    Element jdbc = doc.getRootElement();
    String url = jdbc.element("url").getText();
    String driver = jdbc.element("driver").getText();
    String username = jdbc.element("username").getText();
    String password = jdbc.element("password").getText();
    Configuration cfg = new Configuration(url, driver, username, password);
    return cfg;
  }
  public String getUrl() {
    return url;
  }
  public void setUrl(String url) {
    this.url = url;
  }
  public String getDriver() {
    return driver;
  }
  public void setDriver(String driver) {
    this.driver = driver;
  }
  public String getUsername() {
    return username;
  }
  public void setUsername(String username) {
    this.username = username;
  }
  public String getPassword() {
    return password;
  }
  public void setPassword(String password) {
    this.password = password;
  }
}

2)、db.xml:保存数据库的配置信息

<?xml version="1.0" encoding="UTF-8"?>
<jdbc>
<url>jdbc:mysql://localhost:3306/test</url>
<driver>com.mysql.jdbc.Driver</driver>
<username>root</username>
<password></password>
</jdbc>

3)、ConnectionFactory.java:JDBC连接工厂方法之一

package cn.java.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionFactory {
  private static ConnectionFactory connectionFactory=null;
  private static Configuration config=Configuration.getConfigure();
  private ConnectionFactory()
  {
    try {
    Class.forName(config.getDriver());
  } catch (ClassNotFoundException e) {
  }
  }
  public Connection getConnection() throws SQLException
  {
    Connection con=null;
    try {
      con=DriverManager.getConnection(config.getUrl(), config.getUsername(), config.getPassword());
      return con;
    }finally{
//     if (null != con) {
//       con.close();
//     }
    }
  }
  public static ConnectionFactory getInstance()
  {
    if (null==connectionFactory) {
      connectionFactory=new ConnectionFactory();
    }
    return connectionFactory;
  }
}

4)、ConnectionFactory2.java:JDBC连接工厂方法之二

package cn.java.jdbc;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
public class ConnectionFactory2 {
  private DataSource ds ;
  private static ConnectionFactory2 connectionFactory2 = null;
  private ConnectionFactory2() {
    MysqlDataSource myDS = new MysqlDataSource() ;
    myDS.setServerName("localhost");
    myDS.setDatabaseName("test");
    myDS.setPort(3306) ;
    myDS.setUser("root");
    myDS.setCharacterEncoding("utf-8");
    myDS.setPassword("");
    this.ds = myDS ;
  }
  public Connection getConnection() throws SQLException {
    Connection conn = null;
    try {
      conn = ds.getConnection() ;
      conn.setAutoCommit(false);
      return conn;
    } catch (SQLException e) {
      if (null != conn) {
        conn.close();
      }
      throw e;
    }
  }
  public static ConnectionFactory2 getInstance() {
    if (null == connectionFactory2) {
      connectionFactory2 = new ConnectionFactory2();
    }
    return connectionFactory2;
  }
}

5)、User.java:定义数据库表user中的id和name的bean类,其中id是自动增长的

package cn.java.jdbc;
public class User {
  private int id;
  private String name;
  public User() {
  }
  public User(int id, String name) {
    this.id = id;
    this.name = name;
  }
  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
}

6)、UserDao.java:user表的操作类,实现了insert、delete、update、query等方法

package cn.java.jdbc;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class UserDao {
  private PreparedStatement st = null;
  private ResultSet rs = null;
  public UserDao() {
  }
  public void insert( Connection con,String name) throws SQLException,IOException {
    String sql="insert into user(name) values(?) ";
    try{
      st=con.prepareStatement(sql);
      st.setString(1, name);
      st.executeUpdate();
    }finally{
      if (null!=st) {
        st.close();
      }
    }
  }
  public void delete(Connection con,int id) throws SQLException,IOException {
    String sql="delete from user where id=?";
    try{
      st=con.prepareStatement(sql);
      st.setInt(1, id);
      st.executeUpdate();
    }finally{
      if (null!=st) {
        st.close();
      }
    }
  }
  public void update( Connection con,int id,String name) throws SQLException,IOException {
    String sql="update user set name=? where id=?";
    try{
      st=con.prepareStatement(sql);
      st.setString(1, name);
      st.setInt(2, id);
      st.executeUpdate();
    }finally{
      if (null!=st) {
        st.close();
      }
    }
  }
  public User query(Connection con,int index) throws SQLException,IOException{
    User user=new User();
    String sql="select * from user where id=?";
    try{
      st=con.prepareStatement(sql);
      st.setInt(1, index);
      rs=st.executeQuery();
      while (rs.next()) {
        user.setId(rs.getInt(1));
        user.setName(rs.getString(2));
        break;
      }
    }finally{
      if (null!=rs) {
        rs.close();
      }
      if (null!=st) {
        st.close();
      }
    }
    return user;
  }
  public List<User> queryAll(Connection con) throws SQLException,IOException {
    List<User> list=new ArrayList<>();
    String sql="select * from user";
    try {
      st=con.prepareStatement(sql);
      rs=st.executeQuery();
      while (rs.next()) {
        User user=new User();
        user.setId(rs.getInt(1));
        user.setName(rs.getString(2));
        list.add(user);
      }
    }finally{
      if (null!=rs) {
        rs.close();
      }
      if (null!=st) {
        st.close();
      }
    }
    return list;
  }
}

2、JDBC连接的测试类

1)、TestJdbc.java:数据库测试类

package cn.java.jdbc;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
public class TestJdbc {
  public static void main(String[] args) {
    Connection con=null;
    try {
      con=(Connection) ConnectionFactory.getInstance().getConnection();
      UserDao userDao=new UserDao();
      //con=(Connection) ConnectionFactory2.getInstance().getConnection();
      if (null!=con) {
        System.out.println("Link JDBC SUCESS");
        //userDao.insert(con, "zhangsir");
        //userDao.delete(con, 4);
        //userDao.update(con, 1, "david");
        List<User> list=userDao.queryAll(con);
        for (User user : list) {
          System.out.println("id="+user.getId()+" name="+user.getName());
        }
      }
    } catch (SQLException e) {
      e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }finally{
      if (null!=con) {
        try {
          con.close();
        } catch (SQLException e) {
        }
      }
    }
  }
}

三、JDBC连接总结

JDBC操作的基本步骤是:

1、创建Connection对象,传入SQL查询命令字符串;
2、获取PreparedStatement对象:通过Connection对象传入SQL查询命令获取;
3、获取ResultSet:对PreparedStatement执行executeUpdate()或者executeQurey()获取;
4、依次关闭打开的对象:先后关闭ResultSet、PreparedStatement和Connection对象.

更多关于java相关内容感兴趣的读者可查看本站专题:《Java+MySQL数据库程序设计总结》、《Java数据结构与算法教程》、《Java文件与目录操作技巧汇总》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

  • Java基于jdbc连接mysql数据库操作示例

    本文实例讲述了Java基于jdbc连接mysql数据库操作.分享给大家供大家参考,具体如下: import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class MySQLDemo { private Connection conn = null; pri

  • Java使用JDBC驱动连接MySQL数据库

    Java使用JDBC驱动连接MySQL数据库的步骤: 1.下载驱动,导入jar包 2.加载驱动 3.设置连接 连接成功后就是一些对数据库中数据的操作 1.下载驱动,导入jar包 当你看到jdbc目录下有相应的jar包说明第一步操作已经完成. 2.加载驱动 3.设置连接 import java.sql.Connection; import java.sql.DriverManager; public class DB_Helper { public static void main(String[

  • javaweb学习总结——使用JDBC处理MySQL大数据

    BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器.在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型,BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传.下载或者存放到一个数据库). 一.基本概念 在实际开发中,有时是需要用程序把大文本或二进制数据直接保存到数据库中进行储存的. 对MySQL而言只有blob,而没有clob,mysql存储大文本采用的是Text,Text和

  • JDBC中使用Java8的日期LocalDate和LocalDateTime操作mysql、postgresql

    前言 相信大家应该都知道,在实体Entity里面,可以使用java.sql.Date.java.sql.Timestamp.java.util.Date来映射到数据库的date.timestamp.datetime等字段 但是,java.sql.Date.java.sql.Timestamp.java.util.Date这些类都不好用,很多方法都过时了. Java8里面新出来了一些API,LocalDate.LocalTime.LocalDateTime 非常好用 如果想要在JDBC中,使用Ja

  • java中JDBC实现往MySQL插入百万级数据的实例代码

    想往某个表中插入几百万条数据做下测试,原先的想法,直接写个循环10W次随便插入点数据试试吧,好吧,我真的很天真.... DROP PROCEDURE IF EXISTS proc_initData;--如果存在此存储过程则删掉 DELIMITER $ CREATE PROCEDURE proc_initData() BEGIN DECLARE i INT DEFAULT 1; WHILE i<=100000 DO INSERT INTO text VALUES(i,CONCAT('姓名',i),

  • Java 通过JDBC连接Mysql数据库

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序. 如果要使用数据库就要添加数据库的驱动,不同的数据库有不用的驱动,这里就不一一说明,添加jar程序驱动包的方法就不在这里解释, 另一个文章里面有介绍http://www.jb51.net/artic

  • java使用jdbc连接数据库工具类和jdbc连接mysql数据示例

    这个工具类使用简单,实例化直接调用就可以了,大家还可以方便的根据自己的需要在里面增加自己的功能 复制代码 代码如下: package com.lanp.ajax.db; import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException; /** * 连接数据库的工具类,被定

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

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

  • Java使用JDBC连接Oracle_MSSQL实例代码

    一.Statement 复制代码 代码如下: import java.sql.*; public class TestJDBC { public static void main(String[] args) {  Connection oracle_conn = null;  Statement oracle_stmt = null;  ResultSet oracle_rs = null; Connection mssql_conn = null;  Statement mssql_stmt

  • JAVA使用JDBC技术操作SqlServer数据库实例代码

    JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序. JDBC并不能直接访问数据库,需要借助于数据库厂商提供的JDBC驱动程序. 数据库连接 如果要在Java访问数据库,首先要加载一个数据库驱动,数据库驱动只需要在第一次访问时加载一次.然后再每次访问

  • Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率)

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢? 在JDBC编程接口中Statement 有两个方法特别值得注意: 通过使用addBatch()和executeBatch()这一对方法可以实现批量处理数据. 不过值得注意的是,首先需要在数据库链接中设置手动提交,connection.setAutoCommit(false),然后在执行Statement之后执行connection.commit(). import java.io.Bu

随机推荐