第10章 JDBC链接数据库

合集下载

jdbc连接数据库的四个步骤

jdbc连接数据库的四个步骤

jdbc连接数据库的四个步骤一、引入jdbc相关的jar包在使用jdbc连接数据库之前,需要先引入jdbc相关的jar包,以便在代码中使用jdbc的相关类和方法。

常用的jdbc jar包有mysql-connector-java、ojdbc等,根据所使用的数据库类型选择相应的jar包。

二、加载数据库驱动加载数据库驱动是使用jdbc连接数据库的第一步。

不同的数据库有不同的驱动类,需要根据所使用的数据库类型加载相应的驱动类。

加载驱动的方式有两种:一种是使用Class.forName()方法加载驱动类,另一种是使用DriverManager.registerDriver()方法注册驱动类。

三、建立数据库连接建立数据库连接是使用jdbc连接数据库的第二步。

在建立数据库连接之前,需要先获取数据库连接所需的连接信息,包括数据库的URL、用户名和密码。

数据库的URL是连接数据库的唯一标识,用户名和密码用于验证用户身份。

通过调用DriverManager.getConnection()方法,并传入连接信息参数,即可建立数据库连接。

四、执行数据库操作建立数据库连接之后,就可以执行数据库操作了。

数据库操作包括数据的增删改查等操作。

在执行数据库操作之前,需要创建Statement或PreparedStatement对象,并使用这些对象执行相应的SQL语句。

Statement对象用于执行静态SQL语句,而PreparedStatement对象用于执行带有参数的预编译SQL语句。

执行SQL语句后,可以通过ResultSet对象获取查询结果。

jdbc连接数据库的四个步骤如上所述,其中第一步是引入jdbc相关的jar包,第二步是加载数据库驱动,第三步是建立数据库连接,第四步是执行数据库操作。

通过这四个步骤,可以实现使用jdbc连接数据库,进行数据的增删改查等操作。

在使用jdbc连接数据库时,需要注意以下几点:1. 引入的jdbc jar包需要与所使用的数据库类型对应,否则无法正常连接数据库。

python jdbc连接数据库 定义方法

python jdbc连接数据库 定义方法

python jdbc连接数据库定义方法JDBC连接是一种在Python编程语言中与数据库进行交互的标准方法。

它是一种简单而强大的工具,允许我们通过Python代码来执行SQL语句、查询数据库和更新数据。

本文将一步一步地详细介绍如何使用Python JDBC连接数据库的方法。

第一步:安装JDBC驱动程序要使用JDBC连接数据库,我们需要安装相应的JDBC驱动程序。

根据您所使用的数据库类型,您需要下载相应的JDBC驱动程序。

例如,如果您使用的是MySQL数据库,您可以从MySQL官方网站下载MySQL JDBC驱动程序。

确保将驱动程序文件保存在适当的位置,以便在后续步骤中引用它。

第二步:导入必要的模块要在Python中使用JDBC连接数据库,我们需要导入合适的模块。

常用的模块包括`jaydebeapi`和`pyodbc`。

`jaydebeapi`模块是一个纯Python模块,可用于通过JDBC连接到多种数据库。

而`pyodbc`模块则是一个用于连接到ODBC数据库的模块。

根据您的数据库类型和个人偏好,您可以选择导入相应的模块。

第三步:建立数据库连接一旦我们导入了所需的模块,我们就可以开始建立数据库连接了。

对于大多数数据库,我们需要提供以下连接参数:数据库URL、用户名以及密码。

这些参数将用于验证和建立与数据库的连接。

对于`jaydebeapi`模块,我们可以使用`jaydebeapi.connect()`函数来建立数据库连接。

以下是一个示例代码:pythonimport jaydebeapi# 定义数据库连接参数database_url = "jdbc:mysql:localhost:3306/mydatabase" username = "myuser"password = "mypassword"# 建立数据库连接conn = jaydebeapi.connect("com.mysql.jdbc.Driver", database_url, [username, password])对于`pyodbc`模块,我们可以使用`pyodbc.connect()`函数来建立数据库连接。

jdbc连接数据库

jdbc连接数据库

jdbc连接数据库import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;public class JDBConnection {public Connection conn = null; // 声明Connection对象的实例public Statement stmt = null; // 声明Statement对象的实例public ResultSet rs = null; // 声明ResultSet对象的实例private static String dbClassName = 'com.microsoft.jdbc.sqlserver.SQLServerDriver';//定义保存数据库驱动的变量private static String dbUrl ='jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DB_A TM';private static String dbUser = 'sa';private static String dbPwd = 'sa';public JDBConnection(String propertyFileName) {// 带属性文件名的构造方法Properties prop = new Properties();// 属性集合对象InputStream is = null;try {is = JDBConnection.class.getClassLoader().getResourceAsStream(propertyFileName);// 属性文件输入流// is = new FileInputStream('src/' + propertyFileName);prop.load(is);// 将属性文件流装载到Properties对象中is.close();// 关闭流dbClassName = prop.getProperty('dbClassName');dbUrl = prop.getProperty('dbUrl');dbUser = prop.getProperty('dbUser');dbPwd = prop.getProperty('dbPwd');} catch (Exception e) {System.out.println('属性文件 ' + propertyFileName + ' 打开失败!');}try {Class.forName(dbClassName);// 1.注册驱动} catch (ClassNotFoundException e) {e.printStackTrace();}}public JDBConnection() {// 默认的不带参数的构造函数try {Class.forName(dbClassName);// 1.注册驱动} catch (ClassNotFoundException e) {e.printStackTrace();}}public static Connection getConnection() {Connection conn = null;try {// Class.forName(dbClassName);// 1.注册驱动conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);//2.建立与数据库的链接} catch (Exception ee) {ee.printStackTrace();}if (conn == null) {System.err.println('警告: DbConnectionManager.getConnection() 获得数据库链接失败.\r\n\r\n链接类型:'+ dbClassName+ '\r\n链接位置:'+ dbUrl+ '\r\n用户/密码'+ dbUser + '/' + dbPwd);}return conn;}/** 功能:执行查询语句*/public ResultSet executeQuery(String sql) {try { // 捕捉异常conn = getConnection(); // 调用getConnection()方法构造Connection对象的一个实例connstmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,//3.创建语句ResultSet.CONCUR_READ_ONLY);rs = stmt.executeQuery(sql);//4.执行查询} catch (SQLException ex) {System.err.println(ex.getMessage()); // 输出异常信息}return rs; // 返回结果集对象 5.结果处理}/** 功能:执行更新操作*/public int executeUpdate(String sql) {int result = 0; // 定义保存返回值的变量try { // 捕捉异常conn = getConnection(); // 调用getConnection()方法构造Connection对象的一个实例connstmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);result = stmt.executeUpdate(sql); // 执行更新操作} catch (SQLException ex) {result = 0; // 将保存返回值的变量赋值为0}return result; // 返回保存返回值的变量}/** 功能:关闭数据库的连接*/public void close() {//6.释放资源try { // 捕捉异常try {if (rs != null) { // 当ResultSet对象的实例rs不为空时rs.close(); // 关闭ResultSet对象}} finally {try {if (stmt != null) { // 当Statement对象的实例stmt不为空时stmt.close(); // 关闭Statement对象}} finally {if (conn != null) { // 当Connection对象的实例conn不为空时conn.close(); // 关闭Connection对象}}}} catch (Exception e) {e.printStackTrace(System.err); // 输出异常信息}}}。

JDBC:加载数据库驱动、连接数据库(详细讲解)

JDBC:加载数据库驱动、连接数据库(详细讲解)

JDBC:加载数据库驱动、连接数据库(详细讲解)1. 加载数据库驱动:1)由于Java是⼀个纯⾯向对象语⾔,任何事物在其中都必须抽象成类或者类对象,数据库也不例外,JDBC同样也把数据库抽象成⾯向对象的结构;2)JDBC将整个数据库驱动器在底层抽象成⼀个对象(即驱动器对象),所有对数据库的操作都可以通过该对象进⾏;3)只不过数据库驱动对象和普通的Java对象有所不同:i. ⾸先⼤多数普通的Java对象都是运⾏该Java程序前不存在的,⽽是运⾏的时候临时创建的,程序退出后这些对象也随之释放;ii. 但数据库不⼀样,数据库往往是不依赖程序运⾏的,数据库通常都是24⼩时持续运⾏,只不过应⽤程序可以访问它⽽已,因此数据库对象不能像普通对象那样从⽆到有地“创建”;iii. 也就是说⼀个在应⽤程序运⾏之前就已经存在并且正常运⾏的数据库实例如何在Java程序中访问呢?4)加载数据库驱动的⽅法:i. 加载数据库驱动其实就是将操作系统中正在运⾏的数据库进程(实例)转化成Java对象供Java程序使⽤(操作数据库);ii. 这⾥⾸先要了解以下类驱动器的概念:a. 其实在Java中任何类(Object、String等)想要正常运⾏,底层都要有相应的驱动器驱动它;b. 但是我们平时看不出来这些类对象需要什么驱动器驱动啊!那是因为这些基础类的驱动器就是JVM虚拟机本⾝,其驱动的加载是在底层伴随着JVM的启动进⾏的,都对⽤户隐藏起来了,所以你看不到;c. ⽽那些不依赖虚拟机驱动的程序(⽐如⾮常典型的就是数据库程序、⼤多数图形程序,基本都是⽤C/C++编写,肯定不能靠JVM驱动)想在Java中访问就必须⾃⼰⼿动编写加载驱动器的代码了!!iii. ⼿动加载类的驱动器——使⽤Class类的forName静态⽅法:static Class<?> Class.forName(String className);a. className就是那个不依赖JVM驱动的外部进程的Java类名,这个类名必须符合Java命名规则,例如“com.xxx.Xxx"之类的;b. 你在Java中访问外部进程(将外部进程抽象成Java类或者对象)还⼀定要有Java类名?那这个类名是不是要事先就准备好咯?c. 是的!并不是任何外部进程都可以被Java访问,想要被Java访问就必须让那个程序⾃⼰准备好被Java调⽤的接⼝,并事先命名好Java类名才⾏,⽽程序准备好的Java接⼝就是该程序的Java驱动器(让JVM控制程序⾏为的东西就是Javad. 因此数据库⼚商必须⾃⾏别写好数据库的Java驱动器(称作数据库Connector,即连接器,⽤于和Java程序连接),并准备好类名,好让Class.forName加载它;iv. forName的加载原理:a. ⾸先任意⼀个提供Java接⼝的程序都会拥有⼀个Java类名(加载到JVM中就是⽤该类名来访问该程序实例的);b. 这样的程序运⾏后,这个Java类名就会被记录到改程序的进程信息中(⽽改程序的Java接⼝(驱动器)的句柄也会被记录到进程信息中);c. forName传⼊该类名以后就会到操作系统的进程表中查找具有该Java类名的线程;d. 找到对应的进程后就会找到该进程对应的Java驱动,然后将该驱动加载进JVM;e. 之后就可以在Java程序中通过这个类名(或者对象)来调⽤该进程的功能,或者访问进程中的数据了;5)数据库⼚商对驱动类名的命名:i. ⼚商之间各不相同,⽽且也没有规律可循,因此必须要查阅相应⼚商的JDBC⼿册才能知道;ii. MySQL的命名:com.sql.jdbc.Driveriii. Oracle的命名:oracle.jdbc.driver.OracleDriveriv. 从命名的包路径来看,各个⼚商驱动的实现差异较⼤;因此MySQL数据库的加载就是:Class.forName("com.sql.jdbc.Driver");6)准备好数据库连接器:i. 必须事先将数据库的JDBC-Connector加⼊到CLASSPATH路径当中,Connector由数据库⼚商提供,⽽MySQL的JDBC-Connector⽂件是mysql-connector-java-版本号-bin.jar;ii. 原因很简单,数据库的JDBC驱动必须要运⾏起来才能起到作⽤,在Java中就是要运⾏该类,⽽运⾏⼀个类⾸先会想到命令"java 要运⾏的类的类名“了,既然要直接执⾏该命令,那就必须得将⽬标类的路径添加到CLASSPATH中去才⾏,因 iii. 在Eclipse中这样设置:window -> preferences -> java -> install jres -> 选中当前采⽤的JRE点击edit -> add external jars -> 选择jar包路径保存即可;2. JDBC如何管理加载后的数据库驱动——⽤DriverManager建⽴连接:1. forName加载完类后如果发现这是⼀个数据库类的驱动那就会做⼀定的特殊处理了;2. JDBC专门(注意!“专门”)⽤DriverManager类来管理数据库驱动!也就是说DriverManager类是专门⽤来管理JDBC驱动的!不要因为类命中没有出现JDBC之类的字眼就认为该类还可以管理其它驱动!不!DriverManager只⽤来管理JDBC驱动!3. 加载后的驱动会被抽象成Java类型的对象保存在DriverManager的静态变量driver中;4. JDBC规定,⼀个Java进程只能同时持有(最多持有)⼀个JDBC驱动,也就是说上述的driver在加载后就有且仅有它⼀个了,也就是说你⼀次只能持有⼀个数据库对象,这就不允许你⼀个Java进程同时连多个数据库了;5. 还有⼀点要强调的是,数据库访问跟HTTP协议的原理⼀样,都是基于连接的,即查询数据库前必须现建⽴连接,连接上了以后可以进⾏多次查询,最后查询完毕后关闭连接才算⼀次完整的数据库操作,⽽这⾥的要素是什么?i. 那就是⼀个进程同时(最多)只能建⽴⼀个连接;ii. 这是很显然的,⼀个进程就代表⼀个⽤户,这和HTTP⼀样,⼀个⽤户不能同时向⼀个服务器建⽴两个连接,即同⼀个⼈要建⽴第⼆个连接除⾮是第⼀个连接已经断开(上⼀次服务已经结束);iii. 因此加载后的驱动器driver是受到同不监视的,即driver是⼀个同步监视器!6. 可以看⼀下DriverManager的getConnection⽅法,它利⽤driver来建⽴和数据库的连接(就跟HTTP中客户端和服务器端建⽴连接⼀样⼀样滴),它是⼀个同步⽅法!public static synchronized Connection DriverManager.getConnection(String url, String user, String passwd);driver是DriverManager的静态对象,该⽅法是同步⽅法,因此driver在该⽅法中就是同步监视器了;可以看到这样的结构就是单例模式,JDBC让⼀个进程最多只能得到⼀个数据库驱动器!7. 看⼀下getConnection的参数和返回值:i. url:要访问的数据库往往都是在远程(处在某个⽹络节点中),因此需要对数据库进⾏定位;a. 这个url的写法有讲究,不同数据库的写法不⼀样,需要参考数据库的JDBC⼿册;b. 但是JDBC标准还是规定了该URL的框架,其格式是:jdbc:数据库品牌:具体定位信息(该部分各数据库有差异)c. MySQL的写法:jdbc:mysql://hostname:port/具体数据库名,例如"jdbc.mysql://192.23.21.9:8889/student_dataii. user和passwd代表⽤户名和登陆密码,这都是数据库管理员分配的;iii. 返回值是⼀个Connection对象,该对象表⽰Java程序和数据库所建⽴的⼀个屋⾥连接会话,之后可以通过Connection对象和数据库进⾏交流(操作数据库);8. 建⽴连接的⽰例:Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/select_test", "root", "1234");3. ⼀个完整的加载驱动建⽴连接的代码:Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/select_test"); // 利⽤conn和数据库交流。

简述jdbc数据库连接的基本概念和主要功能。

简述jdbc数据库连接的基本概念和主要功能。

简述jdbc数据库连接的基本概念和主要功能。

JDBC(Java Database Connectivity)是Java语言中用于与关系型数据库进行连接和操作的API(Application Programming Interface)。

它为开发人员提供了一种标准的方式来访问和操作数据库,无论使用的是哪种数据库系统。

JDBC库包含了一组用于与数据库进行交互的接口和类。

通过这些接口和类,开发人员可以执行各种数据库操作,如连接数据库、执行SQL语句、事务处理等。

JDBC的基本概念包括以下几个方面:1. 数据库驱动程序(Database Driver):数据库驱动程序是一个软件模块,用于与特定的数据库系统进行通信。

它提供了一个实现JDBC 接口的具体实现,使得Java应用程序可以通过JDBC与数据库进行交互。

2. 数据源(Data Source):数据源是数据库连接的核心概念。

它是一个用于获取数据库连接的对象,可以通过数据源来获得数据库连接,然后执行SQL语句和其他数据库操作。

3. 连接(Connection):连接是通过JDBC与数据库之间的通信通道。

通过连接,Java应用程序可以与数据库建立连接,然后执行各种数据库操作。

4. 语句(Statement):语句是执行SQL语句的对象。

开发人员可以创建不同类型的语句对象,如普通语句(Statement)、预处理语句(PreparedStatement)和调用存储过程的语句(CallableStatement)。

通过语句对象,开发人员可以执行SQL语句并获取执行结果。

5. 结果集(Result Set):结果集是执行查询语句后返回的数据集合。

开发人员可以通过结果集对象获取查询结果的数据,并进行相应的处理。

JDBC的主要功能包括:1. 连接数据库:JDBC提供了与数据库建立连接的功能。

开发人员可以通过JDBC连接到数据库,以便进行数据库操作。

2. 执行SQL语句:JDBC可以执行各种SQL语句,如查询语句、更新语句、插入语句和删除语句等。

python jdbc连接数据库 定义方法 -回复

python jdbc连接数据库 定义方法 -回复

python jdbc连接数据库定义方法-回复Python JDBC连接数据库定义方法在Python中,JDBC(Java Database Connectivity)是一个用于连接和操作数据库的API。

通过JDBC,我们可以使用Python编写的程序连接到各种关系型数据库,例如MySQL、Oracle、SQL Server等,并执行数据库操作,包括查询、插入、更新和删除等。

本文将介绍如何在Python中使用JDBC连接数据库,并提供一步一步的指导。

第一步:安装JDBC驱动程序在Python中使用JDBC连接数据库,首先需要安装JDBC驱动程序。

JDBC 驱动程序是用于连接特定数据库的软件包,可以从数据库供应商的官方网站上下载。

以连接MySQL为例,首先在MySQL官方网站上下载并安装MySQL Connector/J驱动程序。

安装完成后,在Python代码中引入MySQL Connector/J的jar包。

pythonimport jaydebeapi第二步:建立数据库连接在Python代码中,我们使用`jaydebeapi`库来连接数据库。

`jaydebeapi`是一个纯Python实现的JDBC API,用于在Python中连接和操作数据库。

通过`jaydebeapi.connect`方法,我们可以建立与数据库的连接。

pythonimport jaydebeapidef create_connection():conn = jaydebeapi.connect('com.mysql.jdbc.Driver','jdbc:mysql:localhost:3306/mydb',['root', 'password'],'/path/to/mysql-connector-java.jar')return conn上述代码中,`jaydebeapi.connect`方法的参数依次为:驱动程序类名、数据库连接字符串、数据库用户名和密码、驱动程序的jar包路径。

简要说明jdbc连接数据库的步骤

简要说明jdbc连接数据库的步骤

简要说明jdbc连接数据库的步骤一、引入JDBC驱动在使用JDBC连接数据库之前,首先需要引入相应的JDBC驱动。

不同的数据库有不同的驱动,需要根据实际情况选择合适的驱动。

通常情况下,驱动的jar包会提供给开发者使用,需要将其导入到项目中。

二、加载驱动类在使用JDBC连接数据库之前,需要先加载驱动类。

加载驱动类可以通过Class.forName()方法实现,该方法接收一个参数,即驱动类的全限定名。

例如,对于MySQL数据库,加载驱动类的代码如下所示:Class.forName("com.mysql.jdbc.Driver");三、建立数据库连接在加载驱动类之后,可以通过DriverManager的getConnection()方法建立与数据库的连接。

getConnection()方法接收三个参数,分别是数据库的URL、用户名和密码。

其中,URL是连接数据库的地址,用户名和密码用于认证身份。

例如,连接MySQL数据库的代码如下所示:String url = "jdbc:mysql://localhost:3306/test";String username = "root";String password = "123456";Connection connection = DriverManager.getConnection(url, username, password);四、创建Statement对象在建立与数据库的连接之后,需要创建一个Statement对象,用于执行SQL语句。

Statement对象可以通过Connection的createStatement()方法创建。

例如,创建Statement对象的代码如下所示:Statement statement = connection.createStatement();五、执行SQL语句在创建Statement对象之后,可以通过Statement对象的executeQuery()方法执行SQL查询语句,或者通过executeUpdate()方法执行SQL更新语句。

Java数据库连接(JDBC)实现与数据库的交互

Java数据库连接(JDBC)实现与数据库的交互

Java数据库连接(JDBC)实现与数据库的交互Java数据库连接(JDBC)是Java语言用于与关系型数据库进行交互的标准API。

通过JDBC,我们可以实现与数据库的连接、查询、更新等操作,使得应用程序可以有效地与数据库进行数据交流和处理。

本文将介绍JDBC的基本概念、连接数据库的步骤、执行SQL语句的方法以及异常处理等相关内容。

一、JDBC的概念JDBC是Java语言中用于与数据库进行交互的API。

它提供了一组类和接口,用于连接数据库、执行SQL语句、访问数据库结果集等操作。

JDBC允许开发人员使用Java编写与数据库交互的代码,从而实现数据的存储、查询和更新。

二、连接数据库要使用JDBC与数据库进行交互,首先需要建立与数据库的连接。

连接数据库的步骤如下:1. 加载数据库驱动:根据不同的数据库,需要加载相应的驱动程序。

如MySQL数据库可以使用com.mysql.jdbc.Driver类作为驱动程序。

2. 指定数据库连接URL:URL是用于指定数据库连接位置和参数的字符串。

不同数据库的URL格式可能会有所不同。

3. 建立数据库连接:使用DriverManager类的getConnection()方法,传入数据库连接URL、用户名和密码等参数,建立与数据库的连接。

三、执行SQL语句连接数据库成功后,我们可以使用Statement或PreparedStatement接口的实例执行SQL语句。

其中,Statement接口适用于静态SQL语句,而PreparedStatement接口适用于动态SQL语句。

1. 执行查询:对于查询操作,可以使用Statement或PreparedStatement的executeQuery()方法执行SQL查询语句。

结果将以ResultSet对象的形式返回,我们可以通过ResultSet对象获取查询结果。

2. 执行更新:对于插入、更新和删除等操作,可以使用Statement或PreparedStatement的executeUpdate()方法执行SQL更新语句。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

10.3.5 获得查询结果
在10.3.4中通过Statement对象stmt获得的结果集合对象rs 是个集合对象,所以获得的结果是满足select语句条件的 一个集合.调用ResultSet的next()函数,该函数返回布而 值false或true,如果结果集中有数据则返回true,如果没 有则返回false,开始时扫描指针指向结果集合的第一个数 据行之前的位置. 1 //判断该行集合是否还有记录 2 if (rs.next()){ 3 //如果有记录,则获得该行记录中列属性为 "password"的值 4 getresult = rs.getString("password"); 5 }
10.2 JDBC中的常用类和接口
Java API的设计思想是简洁,直观.所以JDBC同 样把单纯性作为设计目标.即在数据库操作时所 调用的函数都符合人的逻辑思维.如链接到数据 库(Connection),建立操作指令(Statement), 执行查询指令(executeQuery),获得查询结果 (ResultSet)等.JDBC的功能基本上归结为三件 事,即建立数据库链接,发送SQL语句和处理查询 结果.这些任务的完成都基于JDBC API.下面将 依次介绍常用的JDBC API.
第10章 JDBC链接数据库
JDBC链接数据库主要讲解如何使用Java的JDBC (Java DataBase Connectivity)实现与不同数 据库厂商,如Oracle,SQL Server,Access等的 链接.本章在介绍实现数据库链接常用类和接口 的基础上,实现了一个数据库链接的实例,通过 该实例读者可以掌握使用JDBC实现基本的数据库 操作,如读,写,删,改数据库记录等.本节和 下一节,将深入讨论如何使用JDBC API.
10.2.2 声明类(Statement)
Statement对象用于将SQL语句发送到数据库中.实际上有 三种Statement对象,它们都作为在给定链接上执行SQL语 句的包容器:Statement,PreparedStatement(它从 Statement继承而来)和CallableStatement(它从 PreparedStatement继承而来).它们都专用于发送特定类 型的SQL语句:Statement对象用于执行不带参数的简单SQL 语句;PreparedStatement对象用于执行带或不带IN参数的 预编译SQL语句;CallableStatement对象用于执行对数据 库已存储过程的调用.Statement接口提供了执行语句和获 取结果的基本方法.PreparedStatement接口添加了处理IN 参数的方法;而CallableStatement添加了处理OUT参数的 方法.由于Statement接口是最常用的接口,所以下面并获得Statement对象
在上面我们完成了数据库的配置.如果需要以某种方式发现数据库查 询程序是否能够正确访问数据库的内容,需要执行到下面的程序结束. 如果没有异常抛出,说明配置正确,数据库可以正确链接,可以访问 了.代码测试能否正确访问数据库. 代码 测试能否正确访问数据库 1 String url = "jdbc:odbc:test"; //test为数据源名 2 try { 3 conn = DriverManager.getConnection(url); // 获 得Connection对象 4 stmt = conn.createStatement(); //获得Statement对象 5 } 6 catch (SQLException ex) { 7 ex.printStackTrace(); //抛出异常 8 }
10.2.1 驱动程序管理类(DriverManager)
DriverManager类是JDBC的管理层,作用于用户和 驱动程序之间.它跟踪可用的驱动程序,并在数 据库和相应驱动程序之间建立链接.另外, DriverManager类也处理诸如驱动程序登录时间限 制及登录和跟踪消息的显示等事务.对于简单的 应用程序,一般程序员需要在此类中直接使用的 惟一方法是DriverManager.getConnection( ). 该方法将建立与数据库的链接.JDBC允许用户调 用DriverManager的方法getDriver,getDrivers 和registerDriver及Driver的方法connect.但多 数情况下,还是首先考虑让DriverManager类管理 建立数据库链接的细节.
10.1.3 JDBC如何实现数据库的平台无关性
为了让JDBC与平台无关,JDBC设计了"驱动程序 管理类",该类会动态维护目前所有数据库产品 的驱动程序对象,通过加载相应的数据库驱动程 序就可以实现对数据库的访问.这里的"驱动程 序管理器"就是DriverManager类. DriverManager类存有已注册的Driver类的清单. 当调用方法getConnection时,它将检查清单中的 每个驱动程序,直到找到可与URL中指定的数据库 进行链接的驱动程序为止.Driver的方法connect 使用这个URL来建立实际的链接.具体如何实现数 据库的链接,我们通过在10.3节的基本概念和具 体示例再详细介绍.
10.1.2 JDBC的目标
当前数据库的主要问题之一是不同厂商数据库产品的功能竞争,虽然他们 都依据标准的结构化查询语言(Structured Query Language,SQL-92), 但各个厂商还是有标准以外的东西,或者并没有完全按照标准结构化查询 语言的规范实现自己的数据库产品.如果一个数据库应用程序所链接的数 据库发生变化(如从Oracle 变为Sybase),没有JDBC这种变化的实现就 很困难,必须重新编写数据库访问程序,这当然不是件好事.那么如何构 建与数据库平台无关的数据库应用程序呢?这就是JDBC的目标. JDBC的体系结构如图所示,通过该图可以清楚的看到,对应用程序而言, JDBC屏蔽了下层数据库的差异,应用程序看到的是统一的数据库接口.
10.3.1 加载合适的数据库驱动程序
使用JDBC首先要理解如何正确装载JDBC驱动程序,这样才可以保证数据库 应用程序可以在你的系统上正常运行.在代码10-1中出现过下面的指令. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载驱动程序 上述代码的作用上装载jdbc-odbc驱动程序,如果上述装载指令无法正常 执 行 , 需 要 重 新 查 找 该 Java 版 本 的 文 档 说 明 , 看 这 个 名 称 ("sun.jdbc.odbc.JdbcOdbcDriver")是否变了.在编写这段代码时,最好 捕获该异常,即把这行代码放在try块中,在catch块中捕获该异常.如果 程序没有抛出异常,则代表驱动程序加载成功.上述代码修改如所示. 代码 装载数据库驱动程序 1 try { 2 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // 强 行加载数据库驱动程序 3 } 4 catch (ClassNotFoundException ex) { 5 System.out.println("加载数据库驱动程序异常"); 6 }
10.3.2 数据库配置问题
如果希望链接数据库首先要完成数据库的配置, 这里我们假设用户使用32位Windows操作系统(其 他方式需要自己研究相应的文档,找出适用于自 己平台的方法). 首先打开控制面板 管理工具 数据源(ODBC), 会看到如下图样式的对话框,其中选项卡包括用 户DSN,系统DSN,文件DSN等.这里DSN指"Data Source Name"(数据源名称).对JDBC-ODBC而言, 惟一重要的是设定系统DSN,如果想测试配置,并 希望查询数据,就有必要在下面对话框中单击 "添加"按钮,添加一个数据库驱动程序,并通 过单击"配置"按钮,加载一个相应的数据库文 件,这里以Microsoft Access为例.
10.3 如何实现数据库的链接
本节我们以一个完整的数据库链接实例学习JDBC 的使用,首先分别介绍每一个具体步骤,即按照 数据库链接的步骤依次详细介绍,最后再给出完 整的示例程序,把每个步骤有机的结合在一起, 完成一个基本的数据库查询功能的类.通过本节 的学习,读者可以通过示例轻松的理解并掌握 JDBC数据库链接的实现和数据库的结果查询.
10.1 JDBC简介
本节首先介绍什么是JDBC,了解Java JDBC的目标 及如何实现数据库平台的无关性.了解了这些基 本知识后,才能更熟练的使用JDBC API实现数据 库的链接和各种数据库访问行为,从而最终掌握 使用JDBC编写基本的数据库应用程序.
10.1.1 什么是JDBC
JDBC是Sun开发的一套数据库访问编程接口,是一 种SQL级别的API.它由Java语言编写完成,所以 具有很好的跨平台特性,使用JDBC编写的数据库 应用程序可以在任何支持Java的平台上运行,而 不必在不同的平台上编写不同的应用程序,使用 JDBC API就不必为访问Access数据库而专门写一 个程序,为访问Oracle数据库而专门写一个程序, 只需要一个程序就够了,通过它可以向数据库发 送SQL语句,执行数据库操作.
10.2.4 结果集合类(ResultSet)
ResultSet包含符合SQL语句中条件的所有行记录,并且它通过一套get方 法(这些get方法可以访问当前行中的不同列)提供了对这些行中数据的 访问.ResultSet.next()方法用于移动到ResultSet中的下一行,使下一 行成为当前行.代码执行SQL语句的示例. 代码执行 SQL 语句的示例 1 java.sql.Statement stmt = conn.createStatement(); 2 //获得查询结果集合 3 ResultSet r = stmt.executeQuery("SELECT a, b, c FROM Table1"); 4 while (r.next()) //如果结果集合中有数据则打印相应 的数据 5 { 6 int i = r.getInt("a"); //打印当前行的值 7 String s = r.getString("b"); 8 float f = r.getFloat("c"); 9 System.out.println("ROW = " + i + " " + s + " " + f); 10 }
相关文档
最新文档