zoukankan      html  css  js  c++  java
  • 分析jdbc程序的编写步骤和原理

    1、注册驱动:驱动就是类,实现jdbc接口的那些类。告诉jdbc程序我这边有驱动。
    2、建立连接:通过驱动跟数据库建立连接后。通过协议连接。挨个问那些驱动列表里的驱动能不能根据url建立连接。
    3、创建语句:把sql语句运过去,也能把需要的信息运回来。

    4、执行语句:驱动会把这些数据包装,包装成一个二维表的形式。
    5、处理结果:按行循环取出结果。
    6、释放资源:连接要有尽量晚建立,尽量早释放的原则。减轻数据库的负担。



    注册驱动
    其实里面有个列表可以加很多注册进来的驱动,mysql、等。
    方法一:
    DriverManager.registerDriver(new com.mysql.jdbc.Driver());
    方法二:
    System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver:冒号后加其他驱动");
    方法三:
    Class.forName("com.mysql.jdbc.Driver");

    第三个方法作用是:通过这个类名把这个类加载到虚拟机上,还没有构造实例(之前只会说是获得类的对象)。


    那这个是怎么放进驱动的列表里呢(要注册到DriverManager才能用的哦)?:当一个类被加载到虚拟机后,首先执行static代码块。而com.mysql.jdbc.Driver的静态代码块就有方法一的语句了--java.sql.DriverManager.registerDriver(new Driver())把自己注册进驱动列表里了。


    所以第三种方法更好,第一种方法其参数new Driver的时候就包含了方法三,又注册进驱动列表,一共注册了2次同样的驱动。


    另外,方法一依赖mysql的类引用,其参数new的com.mysql.jdbc.Driver是mysql的一个类,需要import java.sql.Connection,引入这个类。离开mysql驱动就不能编译了。也就是需要mysql-connector-java-架包的存在才能通过编译。


    方法二、三即使没有这个架包没有驱动也能通过编译。


    一、建立连接:挨个问那些驱动列表里的驱动能不能根据url建立连接。

    1 String url = "jdbc:mysql://localhost:3306/jdbc";
    2 String user = "root";
    3 String password = "";
    4 Connection conn = DriverManager.gerConnection(url,user,password);

    url格式:
    JDBC:子协议:子名称//主机名:端口/数据库名?属性名 = 属性值&……
    默认本机,使用mysql的默认端口号3306,可以这样:

     String url = "jdbc:mysql:///jdbc";

     二创建语句

    把sql语句运过去,也能把需要的信息运回来。

    Statement st = conn.createStatement();

     三、执行语句

    驱动会把这些数据包装,包装成一个二维表的形式。

    ResultSet rs = st.executeQuery("select * from user");

    四、处理结果

    按行循环取出结果。

    while(rs.next())
    {
        System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) + "\t" + rs.getObject(3) + "\t");
    }

    五、释放资源

    rs.close();
    st.close();
    conn.close();

    后创建的要先关闭。
    数据库建立连接的能力是有限的,比如mysql两百个吧,机器好的就多点。所以用完就要关掉。数据库漏关的话系统很快就会死掉,特别是那些大型网站要注意。
    如果close抛异常的话,那数据库还是没关。后面再讲严谨的。
    连接要有尽量晚建立,尽量早释放的原则。减轻数据库的负担。

  • 相关阅读:
    c++ stl string char* 向 string 转换的问题
    不要在疲惫中工作
    今天
    悠然自得
    忙与闲
    <转>LuaTinker的bug和缺陷
    匿名管道
    SetWindowHookEx 做消息响应
    最近工作
    实现网页页面跳转的几种方法(meta标签、js实现、php实现)
  • 原文地址:https://www.cnblogs.com/dadada/p/3076130.html
Copyright © 2011-2022 走看看