关于java:不会吧居然现在还没有人知道JDBC的核心API吗

8次阅读

共计 3946 个字符,预计需要花费 10 分钟才能阅读完成。

一、罕用 JDBC API

在 java.sql 包中蕴含体现 JDBC 基本功能的若干接口和类:

1.Driver 接口:代表驱动程序

2.DriverManager 类:驱动程序管理员

3.Connection 接口:代表数据库连贯

4.Statement、PreparedStatement、CallableStatement 接口:代表数据库操作对象

5.ResultSet 接口:代表后果集

6.DatabaseMetadata、ResultSetMetadata 接口:代表元数据

7.Types 类:代表 JDBC 类型

===============================================================================

二、若干 API 的具体阐明

Statement 和 PreparedStatement ——SQL 语句执行接口

      Statement 接口代表了一个数据库的状态,再向数据库发送相应的 SQL 语句时,都须要创立Statement 接口或者PreparedStatement 接口。

Statement 次要用于操作不带参数的 SQL 语句,比方增、删、改。

PreparedStatement:预编译的 Statement 接口

 第一步:通过连贯取得PreparedStatement 接口对象,用带占位符(?)的 sql 语句结构。

  PreparedStatement ps=con.praperedStatement(“select * from test where id=?”);

 第二步:设置参数

  ps.setString(1,”5″);

  第三步:执行 sql 语句

   rs= ps.executeQuery();

Statement 发送残缺的 sql 语句到数据库不是间接执行,而是 先编译、后运行。

PreparedStatement 先发送带参数的 sql 语句,在发送一组参数值。

如果是同构的 sql 语句,则PreparedStatement 效率高。对于异构的 sql 语句,两者效率差不多。

同构: 两个 sql 语句可编译的局部是雷同的,只有参数值不同。

异构: 两个 sql 语句的格局是不同的。

留神点:
1. 应用预编译的Statement(即PreparedStatement)编译多条 sql 语句一起执行。
2. 能够跨数据库应用,编写通用程序。
3. 能用预编译时尽量用预编译。


ResultSet 接口:

ResultSet 接口是查问后果集接口,它对返回的后果集进行解决。ResultSet 是程序员进行 JDBC 操作的必须接口。


ResultSetMetaData—- 元数据操作接口:

      ResultSetMetaData 是对元数据进行操作的接口,能够实现很多高级性能。Hibernate 运行数据库的操作,大多是通过此接口。能够认为,此接口是 SQL 查询语言的一种反射机制。ResultSetMetaData 能够通过数据的模式,来遍历数据库各个字段的属性。对于开发者来说,此机制意义重大。

JDBC 通过元数据(MetaData)来获取具体的表相干的信息,例如,能够查询数据库中有哪些表、标有哪些字段、字段的属性等。MetaData 通过一系列的getXXX 将这些信息返回给咱们。

MetaData 元数据包含 数据库源数据 DatabaseMetadata 和 后果集元数据 ResultSetMetaData
数据库源数据 DatabaseMetadata: 应用 connection.getMetaData()取得了对于数据库整体的元数据信息。
后果集元数据 ResultSetMetaData: resultSet.getDataMeta 取得的比拟重要的是表的列名、列的属性等信息。
后果集元数据对象: ResultSetMetaData meta = rs.getDataMeta();
 字段个数:meta.getColumnCount();
字段名字:meta.getColumnName();
字段 JDBC 类型:meta.getColumnType();
字段数据库类型:meta.getColumnTypeName();
数据库元数据对象: DatabaseMetaData meta = con.getMetaData();      
数据库名:meta.getDatabaseProductName();
数据库版本号:meta.getDatabaseProductVersion();
数据库驱动名:meta.getDriverName();
数据库驱动版本号:meta.getDriverVersion();
数据库 URL:meta.getURL();
该连贯的数据库登录名:meta.getUserName();


三、JDBC 应用程序的根本步骤:

1. 注册驱动

2. 建设数据库连贯

3. 创立数据库操作对象

4. 执行 SQL

5. 处理结果集

6. 敞开 JDBC 对象

1. 注册一个驱动 driver

   注册驱动程序的三种形式:

   形式一:Class.forName(“Oracle.jdbc.driver.OracleDriver”);

  形式二:Driver driver=new Oracle.jdbc.driver.OracleDriver();

   DriverManager.registerDriver(driver);

 形式三:编译时在虚拟机中加载驱动

 javac -D jdbc.drivers = oracle.jabc.driver.OracleDriver xxx.java

 java -D jabc.drivers = 驱动全名   类名

 应用零碎属性名,加载驱动 - D 示意为零碎属性赋值

              附:mysql 的 Driver 全名:com.mysql.jdbc.Driver

                   sqlserver 的 Driver 全名:com.microsoft.jdbc.sqlserver.SQLServerDriver

2. 建设连贯     

  conn=DriverManager.getConnection

  ("jdbc:oracle.thin:@192.168.0.254:1521/test","username","password");

  下面括号中放的是:oracle 自协定 +@+ip:port / 数据库实例名,数据库用户名,用户明码。mysql url 写法:jdbc:mysql://192.168.254:3306/test

3. 取得一个 Statement 对象

   sta = conn.createStatement();

4. 通过 Statement 执行 sql 语句

   sta.excuteQuery(sql);// 返回一个查问后果集

   sta.executeUpdate(sql);// 返回值为 int 型,示意影响记录的条数

   将 sql 语句通过连贯发送到数据库中执行,以实现对数据库的操作。

5. 处理结果集

  应用 Connection 对象取得一个 Stagement,Statement 中的 executeQuery(String sql)办法能够应用 select 语句查问,并返回一个后果集 ResultSet。通过遍历这个后果集,能够取得 select 语句的查问后果。ResultSet 的 next()办法会操作一个游标从第一条记录开始读取,直到最初一天记 录。executeUpdate(String sql)办法用于执行 DDL /DML 语句,比方 update,delete 等。

只有 select 语句才有返回后果集。

   例:

             Statement sta = con.createStatement(); // 创立 statement 对象
              String sql = "insert into test(id,name) values(1"+""" "+"king"+" """+") ";
              sta.executeUpdate(sql); // 执行 sql 语句
              String sql = "select * from test";
              ReslutSet rs = sta.executeQuery(sql);// 执行 sql 语句后有后果集
              // 遍历处理结果集
              while(rs.next()){System.out.println(rs.getInt("id"));
                   System.out.println(rs.getString("name"));
              }

6. 敞开数据库连贯(开释资源)

   调用 close()办法:rs.close();         
        sta.close();          
        conn.close();
ResultSet、Statement 和 Connetction 是顺次依赖的。

留神:要按先 ResultSet,再 Statement,最初 Connetction 的程序敞开资源。因 ResultSet 和 Statement 在连贯的状况下能力应用,所以在连应用束 后可能还有其余的 statement 还在连贯,所以不能先敞开 Connection。

往期更多精彩我已收录在我的专区,外面收录了 Java 学习路线图、Java 从无所不知到入门、Java 根本语法、Javase 语法根底测试,Java 从入门到精通等 zl, 戳我去聆取,或私信我回复“”Java“”!!!

正文完
 0