JDBC的学习总结

来源:互联网 发布:用友软件记账流程 编辑:程序博客网 时间:2024/06/16 18:30

今天学习了一下JDBC,作为一个初学者,只是初步的了解了一下JDBC。
JDBC API提供了以下接口和类:

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

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

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

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

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

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

JDBC的一般执行步骤:
导入数据包: 要求包括含有需要进行数据库编程的JDBC类的包。大多数情况下,使用 import java.sql.* 就可以了。

注册JDBC驱动程序:要求初始化驱动程序,使它可以与数据库打开一个通信通道。
Class.forName(“com.mysql.jdbc.Driver”);

打开一个连接:要求中使用DriverManager.getConnection()方法创建一个Connection对象,它代表与数据库服务器的物理连接。
Connection conn = DriverManager.getConnection(String url);

执行操作: INSERT,DELETE,UPDATE,SELECT等
String sql = “INSERT INTO USERINFO VALUES()”;
stmt.executeUpdate(sql);

清理环境:需要明确地关闭所有的数据库资源相对依靠JVM的垃圾收集。
stmt.close();
conn.close();

  1. 关于executeQuery()和executeUpdate()方法的区别
    a. executeQuery()主要用来执行 SELECT语句, 产生单个结果集:ResultSet rs;
    b.executeUpdate()主要用来执行INSERT,DELETE,UPDATE和SQL DLL(数据定义语言)语句.
    执行insert,delete,update时返回受影响的行数
    执行CREATE TABLE,DROP TABLE等不操作行的语句时,返回0;
  2. 占位符的使用
package com.study.dao;//导入数据包import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;import java.sql.Statement;public class JDBCTest{    public static void main(String[] args) throws SQLException    {        Statement stmt = null;        Connection conn = null;        try        {            //注册jdbc驱动程序            Class.forName("com.mysql.jdbc.Driver");            String url = "jdbc:mysql://localhost:3306/test2?"                    + "user=root&password=root&useUnicode=true&characterEncoding=UTF8";            conn = DriverManager.getConnection(url);//打开一个链接            stmt = conn.createStatement();            //String sql = "DROP TABLE REGISTRATION ";//因为之前表存在所以先删除这张表            //stmt.executeUpdate(sql);            String sql = "CREATE TABLE REGISTRATION " + "(id INTEGER not NULL, " + " first VARCHAR(255), "                    + " last VARCHAR(255), " + " age INTEGER, " + " PRIMARY KEY ( id ))";            stmt.executeUpdate(sql);//创建一张Registration表            sql = "INSERT INTO REGISTRATION VALUES(?, ?, ?, ?)";//? 占位            PreparedStatement pstm=conn.prepareStatement(sql);            for ( int i = 0; i < 10; i++ )            {                pstm.setInt(1, i + 1);                pstm.setString(2, "wang"+i);                pstm.setString(3, "xiaoming"+i);                pstm.setInt(4, 12+i);                pstm.executeUpdate();            }            pstm.close();            stmt.close();            conn.close();        }        catch (SQLException se)        {            // Handle errors for JDBC            se.printStackTrace();        }        catch (Exception e)        {            // Handle errors for Class.forName            e.printStackTrace();        }        finally        {            // finally block used to close resources            try            {                if (stmt != null)                    stmt.close();            }            catch (SQLException se)            {            } // do nothing            try            {                if (conn != null)                    conn.close();            }            catch (SQLException se)            {                se.printStackTrace();            } // end finally try        } // end try    }}
  1. 异常处理
    驱动加载错误
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    在WebConnect->WEB-INF->lib路径下加入mysql-connector-java-5.1.7-bin.jar包

未完待续。。。
(若有什么不对的地方欢迎批评教育,谢。)
参考文章:https://www.douban.com/note/247653686/
推荐学习:http://www.yiibai.com/jdbc/jdbc-insert-records.html

0 0
原创粉丝点击