JDBC的学习总结

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

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

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

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

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

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

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

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

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

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

创建Statement对象: 通过Statement对象将SQL语句提交到数据库。
stmt = conn.createStatement();

执行操作: 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值