JDBC-- 基础理解&&数据库连接

JDBC-- 基础理解&&数据库连接,第1张

JDBC-- 基础理解&&数据库连接 1、概念

JDBC(Java Database Connectivity)是一种用于执行SQL语句的JavaAPI,可以为多种关系型数据库提供统一访问,他是由一组用Java语言编写的类和接口组成。 2、本质

java官方提供的一套规范,用于帮助开发人员快速实现不同关系型数据的连接。
实际上就是SUN公司为了满足程序员便利,提供了很多供程序员使用来 *** 作数据库的接口,而这些接口的具体实现则在每个数据库公司去单独实现。使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。

如果没有JDBC,java程序调用数据库需要实现每个数据库的不同方法。

采用JDBC后:

3、入门程序流程
    导入jar包注册驱动 (告诉java程序,即将连接的是哪个品牌的数据库)获取数据库连接 (表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级,使用完之后一定要关闭)获取执行者对象 (专门执行sql语句的对象)执行sql语句并返回结果处理结果 (只有上一步执行的是select语句,才会处理数据)释放资源 (java和数据库是进程间的通信)
4、连接 4.1 注册驱动

由 Driver接口实现:

java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现。

在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器类(java.sql.DriverManager)去调用这些Driver实现。

Oracle的驱动:oracle.jdbc.driver.OracleDriver

mySql的驱动: com.mysql.jdbc.Driver

具体代码实现:

下面这段代码写在了 Driver类的静态代码块中了,只需要让类加载即可以执行静态代码块,因此可以通过反射机制进行类的加载,即上面代码。 不需要返回值,只需要他的类加载动作。

//通过创建数据库驱动来实现Driver
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//通过反射机制加载类实现静态代码段
//Class.forName("com.mysql.cj.jdbc.Driver");
4.2 URL
    url: 统一资源定位符(网络中某个资源的绝对路径)URL包括: 协议 IP PORT 资源名http:// 通信协议 182.61.200.7 IP地址 80 端口号 index.html 服务器上的某个资源名
5、代码实现 5.1 实现DML语句(增 删 改)

没有返回结果集,stat调用的是 executeUpdate方法,返回的结果是对数据的进行DML *** 作的记录条数。count==1则表示对一条数据进行DML *** 作,返回3则是处理记录条数为3。

package com.java;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class JdbcDemo {
    public static void main(String[] args) throws Exception {

        //1.导入jar包
        //2.注册驱动
        //Class.forName("com.mysql.cj.jdbc.Driver");
        //下面这段代码写在了 Driver类的静态代码块中了,只需要让类加载即可以执行静态代码块,因此可以通过反射机制
        //进行类的加载,即上面代码。 不需要返回值,只需要他的类加载动作。
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        //3.获取连接
        
       Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/mytest1","root","root");
        //4.获取执行者对象 (数据库 *** 作对象)
        Statement stat = con.createStatement();
        //5.执行sql语句
        String sql = "insert into user(id,name,age) values (20,'aaa',20)";
       // ResultSet rs=stat.executeQuery(sql);
        //处理结果
        int count = stat.executeUpdate(sql);
        if(count==1){
            System.out.println("保存成功");
        }

        stat.close();
        con.close();
    }
}

5.2 实现DQL语句 (查询语句)

执行的是 executeQuery方法,返回的是处理集,然后对处理集进行遍历,则可以列出数据。

package com.java;

import java.sql.*;

public class Jdbcselect {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stat = null;
        ResultSet rs = null;

        try {
         Class.forName("com.mysql.cj.jdbc.Driver");

         conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mytest1","root","root");

         stat = conn.createStatement();

         String sql = "select * from user";

         rs = stat.executeQuery(sql);

         while (rs.next()){
             //getString方法就是将获取到的数据全部转换为String类型
             //当然还有其他类型 getInt getDouble ==》可以直接对结果进行数据 *** 作
             //通过列号获取不健壮
//             String id = rs.getString(1);//根据列号开始获取数据,JDBC列号从1开始
//             String name = rs.getString(2);
//             String age = rs.getString(3);
             //通过列名称获取数据,列名称是查询结果集的列名称
             String id = rs.getString("id");//
             String name = rs.getString("name");
             String age = rs.getString("age");
             System.out.println(id+" "+name+" "+age);
         }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //释放资源
            if(rs!=null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(stat!=null) {
                try {
                    stat.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

        }
    }
}

5.3 优质方法—配置文集存放字符串

在对应的src下创建一个配置文件jdbc.properties其中的内容如下:

className=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mytest1
user=root
password=root

使用配置文件的好处:

    实现了代码和数据的分离,如果需要修改配置信息,直接在配置文件中修改,不需要深入代码 ,解耦。如果修改了配置信息,省去重新编译的过程。编写的java程序在部署到服务器上时,需要打包。如果java代码修改过,就需要重新打包。使用配置文件的方式,如果配置信息修改,并没有导致代码的修改。所以不需要重写打包。
      Properties properties = new Properties();
        //加载资源的路径:默认为src下
        InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
        properties.load(is);
 
        String className = properties.getProperty("className");
        String url = properties.getProperty("url");
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
 
        //加载驱动
        Class.forName(className);
 
        //获取连接
        Connection connection = DriverManager.getConnection(url, user, password);
 
 
        System.out.println(connection);
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5722330.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存