import java.sql.*; public class DataBase { public static void main() { } } /* 5.1.1 JDBC */ class JDBC{ static void JDBCExample(String userid,String passwd){ /* */ try{ /* 加载驱动器类,参数为直线了java.sql.Driver接口的实体类,这个接口的功能是 实现了不同层面的操作之间的转换,一边是产品类型无关的JDBC操作、另一边是与产品 相关的、在所使用的特定数据库管理系统中完成的操作。 */ Class.forName("oracle.jdbc.driver.OracleDriver"); /* 调用DriverManager类的getConnection方法来打开一个数据库连接。 URI中指代的意义: jdbc:oracle:thin:与数据库通信所使用的协议 db.yale.edu:服务器所在主机的名称 1521:端口号 univdb:所连接的数据库实例 */ Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@db.yale.edu:1521:univdb", userid, passwd); /* 一旦打开了一个数据库连接,程序就可以利用该连接来向数据库发送SQL语句用于执行。这是 通过Statement类的一个实例来完成的。一个Statement对象并不代表SQL语句奔上,而是 实现了可以被Java程序调用的一些方法,通过参数来传递SQL并被数据库系统所执行。我们 的例子在连接变量conn上创建了一个Statement句柄。 我们即可以用executeQuery函数,又可以用executeUpdate函数来执行一条语句~ */ Statement stmt = conn.createStatement(); stmt.executeUpdate("insert into instructor values('','','')"); /* */ ResultSet set = stmt.executeQuery(""); while (set.next()) { //Do Something... } ResultSetMetaData rsmd = set.getMetaData(); for (int i = 1; i < rsmd.getColumnCount(); i++) { System.out.println(rsmd.getColumnName(i)); System.out.println(rsmd.getColumnType(i)); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } } /* 5.1.1.5 可调用语句 JDBC提供了CallableStatement接口来允许调用SQL的存储过程和函数,此接口对函数 和过程所扮演的角色跟prepareStatement对查询所扮演的角色一样。函数返回值和过程 的对外参数的数据类型必须先用方法registerOutParameter()注册,它们可以用与结果 集用的方法类似的get方法是获取。 */ /* 5.1.1.5 元数据特性 一个Java应用程序不包括数据类型存储的数据的声明。这些声明是SQL数据定义语言DDL的一 部分。因此使用JDBC的java程序,必须要么将关于数据库模式的假设硬编码到程序中,要么 直接在运行时从数据库系统中得到那些信息。后一种方法更可取,因为它使得应用程序可以更 健壮的处理数据库模式的变化。 我们使用executeQuery方法查询时,查询结果被封装在一个ResultSet对象中。接口ResultSet 中有一个getMetaData()方法,它返回一个包含结果集元数据的ResultSetMetaData对象, ResultSetMetaData对象进一步又包括查找元数据的方法,例如结果集的列数,或者某个特定 列的数据类型。这样,即使不知道结果的模式,我们也可以方便地执行查询。 DatabaseMetaData接口提供了查找数据库元数据的机制。接口Connection包含一个getMeteData 方法,用于返回一个DatabaseMetaData对象。接口DatabaseMetaData进一步又包含了大量的方法 可以用于获取程序所连接数据库和数据库系统的元数据。 */ /* */