zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    陶瓷电容的结构、工艺、失效模式
    Vue.js最佳实践
    Vue 超快速学习
    CSS 小技巧
    HTML5 Canvas
    webkit下面的CSS设置滚动条
    Some untracked working tree files would be overwritten by checkout. Please move or remove them before you can checkout. View them
    JSCS: Please specify path to 'JSCS' package
    React中ref的使用方法
    React 60S倒计时
  • 原文地址:https://www.cnblogs.com/qqiua/p/9683526.html
Copyright © 2011-2022 走看看