⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java入门(13).htm

📁 一本很容易入手
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      这两个数据库接口使用了同一个设计基础,X/Open SQL Call Level Interface,它简称为CLI。 <BR><BR>  6)b 
      ODBC比JDBC早很长一段时间。 <BR><BR>  7)b 当然不对,ODBC也是允许访问远程服务器上的数据库的。 <BR><BR>  8)c 
      是通过真正能够了解数据库结构的,由数据库厂商提供的,专门的ODBC驱动程序来完成的。 <BR><BR>  9)b 
      对于应用程序而言,它只需直接调用提供的接口就可以了,无须去关心具体的数据库实现。 <BR><BR>  13.2 用JDBC连接数据库 
      <BR><BR>  传授新知 <BR><BR>  所有的JDBC类和方法都包含在java.sql包中: <BR><BR>  类别 类 
      <BR><BR>  驱动程序 java.sql.Driver <BR><BR><BR>java.sql.DriverManager 
      <BR>java.sql.DrivePropertyInfo <BR><BR><BR><BR>  连接 java.sql.Connection 
      <BR><BR>  语句 java.sql.Statement <BR><BR><BR>java.sql.PreparedStatement 
      <BR>java.sql.CallableStatement <BR><BR><BR><BR>  结果集 java.sql.ResultSet 
      <BR><BR>  错误/警告 java.sql..SQLException <BR><BR><BR>java.sql.SQLWarning 
      <BR><BR><BR><BR>  元数据 java.sql.DatabaseMetaData 
      <BR><BR><BR>java.sql.ResultSetMetaData <BR><BR><BR><BR>  日期/时间 
      java.sql.Date <BR><BR><BR>java.sql.Time <BR>java.sql.Timestamp 
      <BR><BR><BR><BR>  其它 java.sql.Types <BR><BR><BR>java.sql.DataTruncation 
      <BR><BR><BR><BR>  表13-1 JDBC类一览表 
      <BR><BR>  在使用JDBC时,每一个驱动程序要被加载之前,都要使用DriverManager进行注册。当需要打开一个连接时,DriverManager根据JDBC的URL选择相应的驱动程序。 
      <BR><BR>  同样的,JDBC也体现了Java这一网络语言的特点,它也是使用URL进行识别一个数据库的。它的语法格式是: 
      <BR><BR>  jdbc:&lt;子协议&gt;:&lt;与DBMS/Protocol相关的子名字&gt; 
      <BR><BR>  JDBC的URL分三个部分组成: 
      <BR><BR>  1)指示部分:jdbc。请大家回忆一下,一个常见的WEB页面的URL是以什么开头的?对,http://,这个指示部分用来说明这个URL是什么类别的。 
      <BR><BR>  2)子协议部分,这个部分用来指出JDBC的子协议,如odbc; 
      <BR><BR>  3)子名字:数据源的名字,如果数据库是在网络上的,那么就用URL//hostname:port//来表示。 
      <BR><BR>  例如:jdbc:odbc:;User=&lt;用户名&gt;;PW=&lt;口令&gt; 
      <BR><BR>  使用JDBC的整个流程如下图所示: <BR><BR><BR>  图13-5 JDBC调用流程图 
      <BR><BR>  正如上图所示,使用JDBC访问数据库需要经过以下几个步骤: <BR><BR>  1) 
      首先,程序调用getConnection()方法,获得一个Connection对象; <BR><BR>  2) 
      然后程序创建一个Statement对象并准备一个SQL语句;这个SQL语句可以是: <BR><BR>  a. 
      被立即执行的语句:Statement对象; <BR><BR>  b.被编译的语句:PreparedStatement对象; 
      <BR><BR>  c.存储过程的调用:CallableStatement对象。 <BR><BR>  3) 
      接着我们就可以执行这个语句(如executeQuery( )、execute( ))等,将得到一个存储结果的ResultSet对象。 
      <BR><BR>  注意: 
      <BR><BR>  也有一些语句是完成一些事务工作,如executeUpdate(),更新。它们将不会返回ResultSet对象,因为它们并没有结果。 
      <BR><BR>  4) 最后,我们就可以使用类似next()等方法对返回的ResultSet对象进行相应的处理。 <BR><BR>  实例说明 
      <BR><BR>  下面,我们来看一个简单的例子。由于JDBC是用来访问数据库的,所以我们首先来创建一个数据库。为了大家都能够完成这个实验,我们就用Office套件中的Access数据库来完成这个例子。 
      <BR><BR>  1. 创建Access数据库student.mdb,在这个库中创建一个表student: <BR><BR><BR>  图13-6 
      数据库student的表结构 <BR><BR>  这个表student的内容如下图所示: <BR><BR><BR>  图13-7 
      表student的内容 <BR><BR>  2. 当我们建好这个示例数据库student后,我们要为其设置ODBC: <BR><BR>  一些说明: 
      <BR><BR>  读到这里,可能有些读者会感到奇怪,我们不是在使用JDBC吗?为什么要设置ODBC呢?这是因为有带JDBC驱动程序的数据库没有ODBC那样多?我们在这里使用的数据库系统Access就没有相应的JDBC驱动程序。 
      <BR><BR>  不过没关系,大家应该记得在JDBC中有一个JDBC-ODBC的桥接器,通过它就可以使用ODBC驱动程序啦。 
      <BR><BR>  现在应该明白为什么为什么要先设置ODBC了吧! <BR><BR>  设置ODBC的方法很简单: <BR><BR>  1) 
      首先,我们打开控制面板,双击“ODBC数据源(32位)”按钮,然后选择“系统DSN页”,将出现如下界面: <BR><BR><BR>  图13-8 
      ODBC设置(1) <BR><BR>  2) 然后,我们单击“添加”按钮,选择“Microsoft Access 
      Driver”,然后单击“完成”按钮: <BR><BR><BR>  图13-9 ODBC设置(2) <BR><BR>  3) 
      接着,就会出现一个如下图所示的对话框,我们首先填上 
      “数据源名”:student,然后单击“选取”按钮,选择我们刚才创建的数据库student.mdb。然后单击“确定“按钮,至此ODBC设置完成: 
      <BR><BR><BR>  13-10 ODBC设置(3) <BR><BR>  3. 
      然后,创建一个源程序文件testjdbc.java,其内容如下: <BR><BR>  源程序:testjdbc.java 
      <BR><BR><BR>import java.sql.*; <BR>public class testjdbc <BR>{ <BR>public 
      static void main(String args[]) throws SQLException <BR>{ <BR>try <BR>{ 
      <BR>String name,sex,age,chinese,maths,output; 
      <BR>Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); <BR>Connection 
      con=DriverManager.getConnection <BR>("jdbc:odbc:student"); <BR>Statement 
      sta=con.createStatement(); <BR>ResultSet rs=sta.executeQuery <BR>("SELECT 
      Name,Sex,Age,Chinese,Maths FROM student"); <BR>System.out.println("Name 
      Sex Age Chinese Maths"); <BR>while(rs.next()) <BR>{ 
      <BR>name=rs.getString(1); <BR>sex=rs.getString(2); 
      <BR>age=rs.getString(3); <BR>chinese=rs.getString(4); 
      <BR>maths=rs.getString(5); <BR>output=name+" "+sex+" "+age+" "+chinese+" 
      "+maths; <BR>System.out.println(output); <BR>} <BR>} 
      <BR>catch(java.lang.Exception ex) <BR>{ <BR>ex.printStackTrace(); <BR>} 
      <BR>} <BR>} <BR><BR><BR><BR>  4. 最后,我们使用javac编译,然后执行java 
      testjdbc,程序输出如下所示: <BR><BR><BR>  图13-11 程序输出图 <BR><BR>  传授新知 
      <BR><BR>  下面,我们就一起来学习一下这个程序: <BR><BR>  1) <BR><BR><BR>import java.sql.*; 
      <BR><BR><BR><BR>  我们知道,JDBC的所有类和方法都在java.sql包中实现的,所以当我们的程序中要使用到JDBC时,就要把这个包import进来。否则就会出错的哟。 
      <BR><BR>  2) <BR><BR><BR>public static void main(String args[]) throws 
      SQLException 
      <BR><BR><BR><BR>  这个语句,我想大家应该可以看懂一半,也就是直到throws之前的部分,这是定义了main方法。而后面的throws 
      SQLException则是说明如果程序遇到SQLException错误时就忽略错误。 <BR><BR>  3) <BR><BR><BR>try 
      <BR>{ <BR>…… <BR>} <BR>catch(java.lang.Exception ex) <BR>{ 
      <BR>ex.printStackTrace(); <BR>} 
      <BR><BR><BR><BR>  这个语句,我们曾经在前面一章中做过介绍,也就是在try程序段中,如果遇到catch语句中定义的错误(在这里是java.lang.Exception 
      ex),就执行catch程序段(在这里就是执行ex.printStackTrace(),打印出相关的错误信息)。 <BR><BR>  4) 
      <BR><BR><BR>Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      <BR><BR><BR><BR>  这条语句,大家虽然没有见过,但我想大家都能够猜出它的用途来!对,就是初始化并加载JDBC-ODBC驱动程序。 
      <BR><BR>  在JDBC的程序中使用JDBC-ODBC桥接器,就一定要在最前面加上这么一句。 <BR><BR>  5) 
      <BR><BR><BR>Connection con=DriverManager.getConnection 
      <BR>("jdbc:odbc:student"); 
      <BR><BR><BR><BR>  这条语句中,我们定义了一个Connection类的对象con,用来存放getConnection方法返回的数据库连接。 
      <BR><BR>  大家回想一下图13-5,在最上层,我们是通过“驱动程序管理器”发出一个getConnection方法,以获得一个Connection(数据库连接)。 
      <BR><BR>  getConnection方法的语法格式是: <BR><BR><BR>Connection 
      getConnection(String url,String user,String password); 
      <BR><BR><BR><BR>  它可以带上三个参数: <BR><BR>  &lt;1&gt; 
      url:数据库的URL。我们知道JDBC的URL由三个部分组成: <BR><BR><BR>  图13-12 URL分析 
      <BR><BR>  &lt;2&gt; user:用户名。象SQL 
      Server、Oracle…等大型数据库中,均采用了用户管理,而在Access中并未使用,所以在本例中当然就不用指出相应的用户了; 
      <BR><BR>  &lt;3&gt; password:相应用户的口令,它是与用户名对应的。 <BR><BR>  6)Statement 
      sta=con.createStatement(); 
      <BR><BR>  我们继续参考图13-5,获得了一个Connection(与数据库的连接)后,我们应该创建一个语句(有三种方法),在我们的程序中使用了最常使用的语句创建方法:createStatement。 
      <BR><BR>  注意: <BR><BR>  创建语句所引用的方法createStatement是Connection对象的方法! 
      <BR><BR>  这样,我们就得到了一个Statement(语句)对象sta。 <BR><BR>  7) 
      <BR><BR><BR>ResultSet rs=sta.executeQuery <BR>("SELECT 
      Name,Sex,Age,Chinese,Maths FROM student"); 
      <BR><BR><BR><BR>  根据图13-5的指示,接下来,我们要使用Statement对象的方法来执行SQL语句,在本例中,我们使用了一个最常用的executeQuery方法。 
      <BR><BR>  这个方法所带的参数是一个SQL语句。 <BR><BR>  小知识:SQL语言 
      <BR><BR>  SQL用来组织、管理和检索存储在计算机数据库中的数据。它的英文全称是:“Structured Query 
      Language”。它是所有的关系型数据库均采用的标准。是一种专门用于数据库操作的语言。它可嵌入到其它语言中(如这里)来实现数据库操作。 
      <BR><BR>  例如,这里的SELECT Name,Sex,Age,Chinese,Maths FROM 
      student的意思就是从student表中选择出Name,Sex,Age,Chinese,Maths五个字段。 
      <BR><BR>  SQL语言博大精深,而且十分有用,有兴趣的读者可以去阅读《SQL完全参考手册》(上、下)。在此限于篇幅就不带赘述了。 
      <BR><BR>  执行了这条SQL语句后,将产生许多输出,这些都将存放在一个ResultSet类的对象rs中。它对应与图13-5就是“结果集”。 
      <BR><BR>  8) <BR><BR><BR>while(rs.next()) <BR>{ <BR>name=rs.getString(1); 
      <BR>sex=rs.getString(2); <BR>age=rs.getString(3); 
      <BR>chinese=rs.getString(4); <BR>maths=rs.getString(5); <BR>output=name+" 
      "+sex+" "+age+" "+chinese+" "+maths; <BR>System.out.println(output); <BR>} 
      <BR><BR><BR><BR>  根据图13-5的指示,有了结果集,我们就可以使用next方法、getString方法获取它们。其中next方法是指取下一个记录(一个记录由多个字段组成,在这个例子中共有5个字段:Name,Sex,Age,Chinese,Maths)。而getString则是从当前记录中取出某个字段,它所带的参数就是字段的序号。 
      <BR><BR>  一些提示: <BR><BR>  刚返回的结果集ResultSet中,记录指针是指向TOP,并未指向任何记录。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -