JDBC-(1)

JDBC


什么是JDBC呢?

全称:>Java DataBase Connectivity——很明显 是用于java数据库连接的

它是java 连接数据库的唯一途径。(框架底层就是用它来实现的)

实际上:

java只是定义了连接 关系型数据库的 一套接口(JDBC),相当于定义了一套标准操作,具体的实现就 交给了 各个数据库公司 完成 ,于是 各个数据库公司各自实现了 JDBC 的驱动。

例如Mysql,Oracle

JDBC的版本

属于java se范畴,伴随升级
java1.6 -4.0 开始:(新特性)无需加载注册驱动

JDBC的位置

在java.sql包中

如何使用JDBC

要使用,首先要确定连接的数据库是什么,选择 导入对应的 数据库厂商实现的 驱动包。

持久化


什么是持久化?(persistence)

永久保存。就是非内存保存。例如磁盘。
将数据存储在数据库中就是持久化的过程。

JDBC连接Mysql


导包

选择java-Mysql驱动包,并且导入项目中。
例如:mysql-connector-java-5.1.10-bin.jar

连接Mysql数据库

部分数据库连接:
其他可以上网查找

mysql  
driverClass:com.mysql.jdbc.Driver
url:jdbc:mysql://localhost:3306/mydb
oracle 
driverClass:oracle.jdbc.driver.OracleDriver
url:jdbc:oracle:thin:@127.0.0.1:1521:dbname
Sql Server2000 
driverClass:com.microsoft.jdbc.sqlserver.SQLServerDriver
url:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbname

Sql Server2005 
driverClass:com.microsoft.sqlserver.jdbc.SQLServerDriver
url:jdbc:sqlserver://localhost:1433; DatabaseName=dbname
  1. 加载驱动类:
    Class.forName("com.mysql.jdbc.Driver");

  2. 获取连接:
    Connection con=DriverManager.getConnection("url","username","password");

操作连接 CRUD


新建操作的对话
Statement statement=con.createStatement();

  1. 查询DQL
    新建查询sql
    例如:String sql=“select * from t_student”;
    可以使用StringBuilder 拼接,进一步封装 一个查询函数。

    ResultSet result=statement.executeQuery(sql);(需要关闭的)
    ResultSet 是一个封装查询结果的对象,结构是 表结构的

    遍历查询结构:
    result.next();//判断是否有下一行,然后跳到下一行(光标从 倒一行起)
    result.getXxx(para);//获取当前行的 某一列(根据参数确定),参数可填写列名称,或者 第几列。

    while(result.next()){
      System.out.println(result.getLong("id");//当前行,主键
      System.out.println(result.getLong("count(id)");//获取当前行,统计总数
      System.out.println(result.getLong(1);//当前行,第一个
      }
    
  2. DML
    statement.executeUpdate(sql);//执行DMLsql;

  3. 关闭资源
    result.close();
    statement.close();
    con.colse();

完整的例子(查询一个student):domain中有定义Student类。

    public Student getOne(Long id) {

        String sql = "select * from t_student where id=" + id;

        Connection con = null;
        Statement statement = null;
        ResultSet result = null;

        try {
            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //连接数据库
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "admin");
            //初始化对话
            statement = con.createStatement();
            //执行sql
            result = statement.executeQuery(sql);
            //遍历结果,包装student
            if (result.next()) {
                Student student = new Student();
                student.setId(result.getLong("id"));
                student.setAge(result.getInt("age"));
                student.setName(result.getString("name"));
                return student;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (result != null)
                    result.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (statement != null)
                        statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        if (con != null)
                            con.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }

            }

        }
        return null;
    }

Dao


为了解决代码重复的问题,将数据库的操作封装到dao类。
就是在开发中,将增删改查提取出来,封装在dao类中,当我们要开发业务逻辑的时候,再进行 直接的调用就好,很好地提高效率。

大致规则

DAO(Data Access Object)是一个数据访问接口。它是一个接口。不提供方法的实现。(面向接口编程)。

DAO的实现类:实现接口中定义的 CRUD的方法。

分包规范:

package 域名倒写.模块名称.组件名;

com.yuming.mokuai.domain; 存储的domain(实体类如Student)文件
com.yuming.mokuai.dao; 存储dao接口文件
com.yuming.mokuai.dao.impl; 存储dao实现类文件
com.yuming.mokuai.test; 临时存储测试类

你可能感兴趣的:(JDBC-(1))