第七章 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连接达梦7数据库

JDBC连接达梦7数据库

JDBC连接达梦7数据库DM JDBC 介绍 DM JDBC 驱动程序是 DM数据库的 JDBC 驱动程序,它是⼀个能够⽀持基本 SQL 功能的通⽤应⽤程序编程接⼝,⽀持⼀般的 SQL 数据库访问。

通过 JDBC 驱动程序,⽤户可以在应⽤程序中实现对 DM 数据库的连接与访问,JDBC 驱动程序的主要功能包括: 1. 建⽴与 DM 数据库的连接; 2. 转接发送 SQL 语句到数据库; 3. 处理并返回语句执⾏结果。

通过DM JDBC连接dm数据库 1.spring项⽬,先引⼊DM JDBC驱动 新建lib⽬录将驱动包放⼊ 引⼊DM JDBC依赖<!--按如下⽅式引⼊每⼀个第三⽅的jar包,其中${project.basedir}指当前项⽬的根⽬录--><dependency><groupId>com.DmJdbcDriver18</groupId><artifactId>DmJdbcDriver18</artifactId><scope>system</scope><version>1.0</version><systemPath>${project.basedir}/src/main/lib/DmJdbcDriver18.jar</systemPath></dependency> 2.通过JDBC创建数据库连接,对数据库进⾏操作@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)@RestControllerpublic class AppController {public static void main(String[] args) {SpringApplication.run(AppController.class,args);}@RequestMapping("/get")public String getEmployee() throws ClassNotFoundException, SQLException {Class.forName("dm.jdbc.driver.DmDriver");String url = "jdbc:dm://127.0.0.1:5236";// 加载驱动程序// 主库 IP = 223.254.254.19String userID = "SYSDBA";String passwd = "dameng123";Connection con = DriverManager.getConnection(url, userID, passwd);PreparedStatement ps = con.prepareStatement("select EMPLOYEE_NAME from test.employees;");ResultSet rs = ps.executeQuery();String name = "";while (rs.next()){name = rs.getString("EMPLOYEE_NAME");}return name;}}结果:以上就是简单的通过JDBC连接达梦数据库的⼩⽰例。

java-JDBC-ODBC连接数据库

java-JDBC-ODBC连接数据库

那是连接数据库时,要获取一个可以执行sql语句的对象。

(偷懒,直接笔记了~)连接数据库步骤:a. 用java程序与db建立一个连接(通道)b。

根据连接获取一个执行sql语句的对象c。

执行sql语句d。

关闭连接public class Main {public static void main(String[] args) {try {//1加载驱动类//forName() 返回与带有给定字符串名的类或接口相关联的Class 对象Class.forName("org.gjt.mm.mysql.Driver");//a.建立连接通道//DriverManager管理一组JDBC 驱动程序的基本服务。

java.sql//getConnection() 返回:到URL 的连接String url="jdbc:mysql://127.0.0.1:3306/a11";String user="root";String password="root";Connection conn=DriverManager.getConnection(url, user,password);//相当于打开链接//b。

获取一个执行sql语句的对象//Statement 用于执行静态SQL 语句并返回它所生成结果的对象。

//createStatement()创建一个Statement 对象来将SQL 语句发送到数据库。

Statement st;st=conn.createStatement();//c.执行sql语句//执行给定SQL 语句,该语句可能为INSERT、UPDATE 或DELETE 语句,或不返回内容st.executeUpdate("insert intostudent(stuname,stuage,stusex,stubirth) values('张三',10,'m','1988-08-09')");//d.关闭连接//立即释放此Connection 对象的数据库和JDBC 资源,而不是等待它们被自动释放conn.close();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("加载驱动类失败!");} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}//或者关闭写在finallyStatement stmt = Conn.createStatement(1004,1007);这里的1004,1007是什么意思呢?上网搜索了一下才发现意思如下:1.TYPE_FORWORD_ONLY,只可向前滚动;2.TYPE_SCROLL_INSENSITIVE,双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。

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包路径。

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

行速度要快于 Statement 对象。因此多次执行的
SQL 语句经常创建为 PreparedStatement 对象,以 提高效率。
一.JDBC工作原理 二.通过JDBC对数据库执行SQL语句 三.基于数据源访问数据库 √ 四.高级开发技巧
数据源
是在JDBC 2.0中引入的一个概念。在JDBC 2.0扩展 包中定义了javax.sql.DataSource接口来描述数据源 的概念。如果用户希望建立一个数据库连接,通过
上述例子开发基本思想
将结果集的游标移到待显示页的第一条记录上,依次 读出待显示的该页记录数,优点在于通用性强,缺点
在于当结果集记录较多时,缓存结果集消耗大量内存,
特别是并发量大时容易内存紧张。分页查询时,一般 建议直接使用具体数据库提供的分页查询SQL语句, 执行效率会高一些。例如MySQL 5.0的格式为: select * from studentTable limit offset, total 返回从offset+1开始共total个记录。注意这要看具体的 数据库,比如SQL Server 2000就没有这类语句。
程序7-6:test2.jsp(片段)
try{ javax.naming.InitialContext ctx = new javax.naming.InitialContext(); javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup("java:/MySqlDS"); conn = ds.getConnection(); preparedStmt =conn.prepareStatement("select customerid,address,phone from customer where firstname like ? "); //设置参数 String parm= request.getParameter("parm"); preparedStmt.setString(1, "%"+parm+"%"); //执行Sql语句 sqlRst=preparedStmt.executeQuery (); %>
形式:
DriverManager.getConnection(url) DriverManager.getConnection(url,user,password) 其中第二种方式需要输入用户名和密码信息进行身份认证。
程序7-1:test.jsp <%@ page contentType="text/html;charset=gb2312" %> <% java.sql.Connection conn; ng.String strConn; try{ Class.forName("org.gjt.mm.mysql.Driver").newInstance(); conn= java.sql.DriverManager.getConnection("jdbc:mysql://localhost/te st","root",""); %> 连接Mysql数据库成功! <% } catch (java.sql.SQLException e){ out.println(e.toString()); } %>
注意:继承了Statement 接口中所有方法的
PreparedStatement 接口也有自己的 executeQuery、
executeUpdate 和 execute 方法。Statement 对象本身不 包含 SQL 语句,因而必须给 Statement.execute 方法提 供 SQL 语句作为参数。PreparedStatement 对象并不将 SQL 语句作为参数提供给这些方法,因为它们已经包含
库访问API的一种高级抽象,它主要包含一些通用的接口类。真
正的数据库访问操作实现是由各自数据库厂商提供的。通常把
厂商提供的特定于数据库的访问API称为数据库JDBC驱动程序。
JDBC通过提供一个抽象的数据库接口,使得程序开发人员在编程
时可以不用绑定在特定数据库厂商的API上,大大增加了应用程
序的可移植性。
serverName
user
String
g
数据库服务器名称。
用户登录名。
程序7-5: mysql- service.xml(片段)
…… <mbean code="org.jboss.resource.connectionmanager.RARDeployment" name="jboss.jca:service=LocalTxDS,name=MySqlDS"> <attribute name="JndiName">MySqlDS</attribute>
在实际运行过程中程序代码通过JDBC访问数据库时,仍旧
需要调用特定于数据库的访问API!!!
应用层
程序员开发
J2EE 应用
JDBC 接口层
Sun
JDBC API
数据库 JDBC 驱动程序 JDBC 驱动层 数据库厂商 数据库
JDBC访问数据库层次结构
创建数据库连接,分为以下几步:首先注册 数据库驱动程序,然后根据具体的JDBC URL地址,调用DriverManager对象的 getConnection()来获取一个代表数据库连接 的java.sql.connectuion对象。
数据库连接测试
一.JDBC工作原理 二.通过JDBC对数据库执行SQL语句√ 三.基于数据源访问数据库 四.高级开发技巧
java.sql.Statement 对象代表一条发送到数据
库执行的SQL语句。有三种 Statement 对
象:Statement 对象用于执行不带参数的
简单 SQL 语句;PreparedStatement 对象 用于执行带或不带参数的预编译 SQL 语 句;CallableStatement 对象用于执行对数 据库存储过程的调用。
PreparedStatement 对象中的 SQL 语句可具有一个
或多个 IN 参数。IN 参数的值在 SQL 语句创建时 未被指定。相反的,该语句为每个 IN 参数保留 一个问号(“?”)作为占位符。每个问号的值 必须在该语句执行之前通过适当的 setXXX() 方法
来提供。
由于 PreparedStatement 对象已预编译过,所以其执
<attribute name="ManagedConnectionFactoryProperties">
<properties> <config-property name="ConnectionURL" type="ng.String">jdbc:mysql://localhost:3306/sample</config-property> <config-property name="DriverClass" type="ng.String">org.gjt.mm.mysql.Driver</config-property> <!--set these only if you want only default logins, not through JAAS --> <config-property name="UserName" type="ng.String">root</config-property> <config-property name="Password" type="ng.String"></config-property>
JDBC事务处理
1.事务 事务是作为单个逻辑工作单元执行的一系列操作 事务维护了数据的完整性、正确语义、持久性。事 务中的所有SQL语句都必须被成功执行,则事务才 会对数据库产生持久性的影响。如果事务中第n条 出错,则表示事务失败,则前面的n-1条语句对数据 库产生的影响可以撤销(回滚)到事务执行前的初 始状态或出错点之前的某个正确状态。
dataSourceName description networkProtocol password portNumber
String String String String Int
数据源接口实现类的名称。 对数据源的描述。 和服务器通讯使用的网络协议名。 用户登录密码。 数据库服务器使用的端口,缺省值为1521。
第七章 JDBC连接数据库
本章主要内容
一.JDBC工作原理 二.通过JDBC对数据库执行SQL语句 三.基于数据源访问数据库 四.高级开发技巧
一.JDBC工作原理 √ 二.通过JDBC对数据库执行SQL语句 三.基于数据源访问数据库 四.高级开发技巧
JDBC 为多种关系数据库提供了统一访问方式,作为特定厂商数据
java.sql.Blob blob=sqlRst.getBlob( "data" ); byte[] ab = blob.getBytes(1, (int)blob.length());
response.setContentType("image/gif");
response.reset(); op.write(ab); op.flush(); op.close(); } Stmt.close ();
conn.close();
相关文档
最新文档