2021-10-04

初学jdbc的感悟

JDBC也是Sun Microsystems的商标
我们一般把jdbc称为java database connectivity(java 数据库连接),是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,通过它,我们就可以连接各种不同的数据库,执行各种如 insert,delete,update, select 等 DML(数据操作语言)语句,甚至可以执行如 create table,drop table 等 DDL(数据定义语言)语句,它还支持调用存储过程等。同时JDBC也是Sun Microsystems的商标。
jdbc就是一些类和接口的集合,在这给大家介绍一下,jdbc主要用的接口Driver接口(用来表示驱动程序类),Connection接口(用于连接数据库)、Statement接口(执行 SQL 语句并将数据检索到 ResultSet 中)、ResultSet 接口( 数据库结果集数据表,通常由执行查询数据库语句产生)、PreparedStatement 接口( 执行预编译 SQL 语句)、DriverManager 类 (驱动程序管理器,通过它来得到连接对象),注意,它是一个类,通过调用它的DriverManager.getConnection()的这个方法来连接对象。
接下来就是实际操作啦

1. 首先我们要通过官网下载驱动程序jar包,jar包中的类实现JDBC接口(在百度搜索mysql/sql jdbc driver download),然后我们要在自己的项目里导入这个jar包。
2. 然后我们就开始进入打代码方面,
a 加载驱动程序(要用Class.forName(“DriverName”))
用的时候会抛出一个异常(只要调用sql包的方法都会抛出一个异常,然后自己try - catch异常处理了就行

    try {
     
Class.forName("实现java.sql.Driver接口的一个类DriverName");
} catch (ClassNotFoundException e) {
     
System.out.println("驱动程序类没有找到");
e.printStackTrace();
}

其中DriverName 根据连接的数据库的种类不同所加载的驱动类不同,但不管是哪个类,它们
一定实现了 java.sql.Driver 接口。我们可以在驱动 jar 包里找到实现接口的相关类。
如 sqlserver 驱动类名为:com.microsoft.sqlserver.jdbc.SQLServerDriver,mysql
驱动程序类名为:com.mysql.jdbc.Driver根据自己的需要调用。
b 建立连接Connection
通过 DriverManager.getConnection()方法得到连接对象(这里也要try-catch处理异常,上面说了)。该方法有三个参数url(统一资源定位符),数据库用户名,数据库密码。其中统一资源定位符为"jdbc:sqlserver://ip:1433;databaseName=dbName(是sql的)
" “jdbc:mysql:// ip:3306/dbName(是mysql的)” “jdbc:oracle:thin:@ ip:1521: dbName(是oracle的)”
c 创建Statement对象
Statement对象就像连接数据库的车辆,处理sql语句。Statement 提供了两个方法
executeUpdate(sql)与 executeQuery(sql)负责,前者 executeUpdate(sql)用来执行insert,update,delete 语句,后者执行 select 语句。由于executeQuery(sql)的知识还没学,今天就着重说executeUpdate(sql)方法

String sql = "insert into lesson(lesName, context, score, hours) values( '医学', '救人', 4, 58)";
 sta = con.createStatement();
            //4 执行sql
            int rows = sta.executeUpdate(sql);
            if (rows == 1){
     
                System.out.println("op success");
            }else{
     
                System.out.println("op error");
            }

d 关闭资源

代码块如下

finally {
     
            try {
     
                if (sta != null){
     
                    sta.close();
                    sta = null;
                }
                if (con != null){
     
                    con.close();
                    con = null;
                }

这里讲一下为什么是这样写,
1)
首先先关闭是sta再释放con(sta是Statement接口创建的,con是Connection创建的,释放的时候和创建的顺序相反)
2)
放在finally块中是因为,无论程序上面出什么错了,都会执行finally块,都会关闭创建的。
3)
调用close方法关闭,因为也是sql的一个方法,所以也会抛出异常,然后用try-catch方法处理异常。
4)
用if语句的原因是,如果前面程序出现异常,sta,con为空指针时,直接就判断,不用让它在执行一次,提高代码效率

以上就是我现在对jdbc的认知总结,本人初学,有不对的地方请各位指出,谢谢!

你可能感兴趣的