博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDBC连接MySQL
阅读量:7025 次
发布时间:2019-06-28

本文共 4170 字,大约阅读时间需要 13 分钟。

hot3.png

1、加载JDBC驱动程序

     连接数据库之前,首先需要调用Class 的forName 方法加载数据库的JDBC 驱动程序。

    例如加载MySQL的驱动程序:

    Class.forName("com.mysql.jdbc.Driver");//通过java.lang.Class类中的静态方法forName()动态实现加载数据库驱动到JVM中

    加载驱动程序后,就可以使用DriverManager.getConnection 方法建立与数据库的连接,得到Connection 对象,Connection 对象代表与数据库的连接。

     DriverManager类是JDBC的管理层,作用于用户和驱动之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。另外,DriverManager 类也处理诸如驱动程序登录时间限制及登录和跟踪消息的显示等事务。

 // 此方法为获取数据库连接    public static Connection getConnection() {        Connection conn = null;        try {            String driver = "com.mysql.jdbc.Driver"; // 数据库驱动            String url = "jdbc:MySQL://127.0.0.1:3306/student";            //127.0.0.1是主机名(或者写成localhost);3306是MySQL服务器的端口;student是数据库的库名            String user = "root"; // 用户名            String password = ""; // 密码            Class.forName(driver); // 加载数据库驱动            if (null == conn) {                conn = (Connection) DriverManager.getConnection(url, user, password);                //创建数据库的连接 ,conn就代表一个数据库的连接。            }        } catch (ClassNotFoundException e) {            System.out.println("加载驱动失败!");            e.printStackTrace();        } catch (SQLException e) {            e.printStackTrace();        } catch (Exception e) {            e.printStackTrace();        }        return conn;    }

2、 Statement

      Statement 对象提供了执行SQL 语句和获取结果的基本方法。Statement 对象可以通过调用Connection 对象的createStatement 方法来创建,例如:Statement stmt = cn.createStatement();

      Statement实例有3种类型:

         (1)执行静态SQL语句。通常通过Statement实例实现。

        (2)执行动态SQL语句。通常通过PreparedStatement实例实现。

        (3)执行数据库存储过程。通常通过CallableStatement实例实现。(不经常用)

          具体的实现方式:   

          Statement stmt = con.createStatement() ;   

          PreparedStatement pstmt = con.prepareStatement(sql) ; //sql可以动态传递参数

           CallableStatement cstmt =con.prepareCall("") ;   

   Statement 对象的executeUpdate 方法执行对数据库的增、删、改等对数据库有改动的操作;

   Statement 对象的executeQuery 方法执行对数据库的查询操作,得到结果集ResultSet 对象。

3、ResultSet

    (1)ResultSet对象用来存放查询结果

        ResultSet rs = stmt.extcuteQuery(sql);

    (2)  ResultSet对象的next方法(rs.next()):用于移动到结果集的下一行,有下一行则返回值为true

    (3) ResultSet对象的getXXX方法获取当前某一列的值,参数可以是列号或列名,例如:getInt , getString  

          while(rs.next()) {

                 System.out.print(rs.getInt("id") + "\t");

                 System.out.print(rs.getString("name") + "\t");

         }

4、关闭JDBC对象

 /**     * 释放ResultSet     * @param rs     */    public static void free(ResultSet rs) {        try {            if (rs != null) {                rs.close();            }        } catch (SQLException err) {            err.printStackTrace();        }    }    /**     * 释放Statement     * @param st     */    public static void free(Statement st) {        try {            if (st != null) {                st.close();            }        } catch (SQLException err) {            err.printStackTrace();        }    }    /**     * 释放Connection     * @param conn     */    public static void free(Connection conn) {        try {            if (conn != null) {                conn.close();            }        } catch (SQLException err) {            err.printStackTrace();        }    }    /**     * 释放所有      * @param rs     * @param st     * @param conn     */    public static void free(ResultSet rs, Statement st, Connection conn) {        free(rs);        free(st);        free(conn);    }

5 、JDBC的核心API

|- Driver : 驱动程序类实现的接口。

  |-Connection connect(String url, Properties info)  --用于连接数据库,得到连接对象

Properties 里需要设置的参数:

    url: 数据库连接的URL字符串。协议+数据库子协议+主机+端口+数据库

    user: 数据库用户名

    password: 用户的密码

  |-Connection :    与数据库连接的接口

      |- Statement createStatement()   --创建Statement对象,用于发送sql语句

      |- PreparedStatement prepareStatement(String sql)  -创建PreparedStatement对象,用于发送预编译的sql语句

      |-CallableStatement prepareCall(String sql)  --创建CallableStatement对象,用于调用存储过程。

      |-Statement: 用于执行静态sql语句

          |-int executeUpdate(String sql)  --执行更新操作(DDL+DML)

          |-ResultSet executeQuery(String sql)  --执行查询操作(DQL)

      |- PreparedStatement: 用于执行预编译的sql语句

          |- int executeUpdate() -- 执行更新操作

          |- ResultSet executeQuery()    -- 执行查询操作

      |- CallableStatement: 用于执行存储过程的sql

          |- ResultSet executeQuery()  --调用存储过程

          |- ResultSet: 结果集。用于封装数据库的查询后的数据

              |- boolean next() --将记录光标移动到下一行

              |- Object getObject(int columnIndex) -- 得到字段上的值

转载于:https://my.oschina.net/u/2416019/blog/484581

你可能感兴趣的文章
人生如牌
查看>>
Nodejs操作MongoDB数据库示例
查看>>
从算法原理,看推荐策略
查看>>
学习笔记TF060:图像语音结合,看图说话
查看>>
自定义控件 --- 电池icon
查看>>
嘻哈说:设计模式之工厂方法模式
查看>>
JS原生Ajax基本操作
查看>>
JS == 操作符的隐式转换,翻译ecma-262/5.1/#sec-11.6.1
查看>>
大三学生的第二个基于 React 框架的轮播图组件。
查看>>
工程实践:给函数取一个"好"的名字
查看>>
小猿圈python之九九乘法表、金字塔和杨辉三角
查看>>
说说如何使用 vue-router 插件
查看>>
警告忽略
查看>>
Java Bean + 注册验证
查看>>
通过mysql 插入一句话***
查看>>
centos 分区扩容
查看>>
JBoss EAP 6 monitoring using remoting-jmx and Zabbix
查看>>
邮件服务器
查看>>
OOAD-设计模式-原型模式
查看>>
Java FAQ(2)
查看>>