• JDBC技术


    JDBC(Java Database Connectivity)是一套用于执行SQL语句的Java API(主要位于 java.sql包中),应用程序通过这套API可以连接到数据库,并使用SQL语句对数据库中的数据进行增删改查等操作。

    JDBC规范(掌握四个核心对象)

      DriverManager:用于注册驱动

      Connection: 表示与数据库创建的连接

      Statement: 操作数据库sql语句的对象

      ResultSet: 结果集或一张虚拟表

    开发一个JDBC程序的准备工作:

    > JDBC规范在哪里:

     JDK中:

    java.sql.*;

    javax.sql.*;

    > 数据库厂商提供的驱动:jar文件

      *.jar

     

     开发一个JDBC程序

    过程:

      1.加载驱动或注册驱动

     DriverManager.registerDriver(new com.mysql.jdbc.Driver());
     Class.forName("com.mysql.jdbc.Driver");

      2.通过DriverManager获取数据库连接

    Connection conn = DriverManager.getConnection(String url, String user, String pwd);
    
    url:表示连接数据库的URL地址
    user:登录数据库的用户名
    pwd:用户密码

      3.通过Connection对象获取Statement对象

    三种方式:

    (1)creatStatement():创建基本的Statement对象。

    (2)prepareStatement(): 创建PreparedStatement对象。

    (3)prePareCall(): 创建CallableStatement对象。

    Statement stmt = conn.createStatement();

      4.使用Statement执行SQL语句

    所有的Statement都有以下三种执行SQL语句方法。

    (1)execute(): 可以执行任何的SQL语句。

    (2)executeUpdate(): 主要用于执行DML(数据操作语言INSERT,UPDATE,DELETE)和DDL(数据定义语言CREATE,ALTER,DROP)语句。执行DML语句是,返回受SQL语句影响的行数,执行DDL语句返回0.

    (3)executeQuery(): 通常执行查询语句,执行后返回代表结果集的ResultSet对象。

    //执行sql语句,并返回结果
    ResultSet rs = stmt.executeQuery("select * from users");

      5.操作ResultSet结果集

    如果执行的SQL语句是查询语句,则执行记过返回一个ResultSet对象,该对象中保存了SQL语句的查询结果。程序可以通过操作该ResultSet对象取出执行结果。

      6.关闭连接并释放资源

    每次操作数据库结束后都要关闭数据库连接,释放资源,包括关闭ResultSet、Statement和Connection等资源。

    示例:

    create database day06;
    use day06;
    
    create table users(
        id int primary key auto_increment,
        name varchar(40),
        password varchar(40),
        email varchar(60),
        birthday date
    )character set utf8 collate utf8_general_ci;
    
    insert into users(name,password,email,birthday) values('zs','123456','zs@sina.com','1980-12-04');
    insert into users(name,password,email,birthday) values('lisi','123456','lisi@sina.com','1981-12-04');
    insert into users(name,password,email,birthday) values('wangwu','123456','wangwu@sina.com','1979-12-04');
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    //用JDBC技术实现查询数据库数据,并显示在控制台中
    public class Demo1 {
        public static void main(String[] args) throws Exception{
            //1 注册驱动
        //    DriverManager.registerDriver(new com.mysql.jdbc.Driver());
            Class.forName("com.mysql.jdbc.Driver");
            //2 获取连接connection
            Connection conn = DriverManager.getConnection("jdbc:mysql://lacalhost:3306/day06", "root", "root");
            //3 得到执行sql语句的对象statement
            Statement stmt = conn.createStatement();
            //4 执行sql语句,并返回结果
            ResultSet rs = stmt.executeQuery("select * from users");
            //5 处理结果
            while(rs.next()){
                System.out.println(rs.getObject(1));
                System.out.println(rs.getObject(2));
                System.out.println(rs.getObject(3));
                System.out.println(rs.getObject(4));
                System.out.println(rs.getObject(5));
                System.out.println("------------");
            }       
            //6 关闭资源
            conn.close();
            stmt.close();
            rs.close();
        }
    }

    注意:

    1.注册驱动

    虽然使用DriverManager.registerDriver(new com.mysql.jdbc.Driver())方法可以完成注册,但此方法会使数据库驱动被注册两次,且强烈依赖数据库的驱动jar。这是因为Driver类的源码中,已经在静态代码块中完成了数据库驱动注册。所有为了避免数据库驱动重复注册,只需要在程序中使用Class.forName()方法加载驱动即可。

    2.释放资源

    每次操作数据库结束后都要及时关闭数据库资源,释放连接占用的数据库和JDBC资源,以免影响系统的运行速度。为了保证资源的释放,在java程序中,应该将最终必须要执行的操作放在finally代码块中。

                                                                                                                                                                                                                                                                                                                         2018-09-20 21:45:41

  • 相关阅读:
    《Java TCP/IP Socket 编程 》读书笔记之十一:深入剖析socket——TCP套接字的生命周期
    c++实现二分查找
    hadoop序列化机制与java序列化机制对比
    C、C++中“*”操作符和“后++”操作符的优先级
    poj2774之最长公共子串
    Python之美[从菜鸟到高手]--urlparse源码分析
    (程序员面试题)字符串处理之寻找最大不重复子串
    hdu 4782 Beautiful Soupz
    教程Xcode 下编译发布与提交App到AppStore
    云端的ABAP Restful服务开发
  • 原文地址:https://www.cnblogs.com/qqiua/p/9683526.html
Copyright © 2020-2023  润新知