- 浏览: 747084 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
lengzl:
请问,那个Node 是哪个包里面的类?
JAVA 二叉树的递归和非递归遍历 -
gongchuangsu:
总结的很好,感谢感谢
JAVA 二叉树的递归和非递归遍历 -
Caelebs:
666666666 居然是10年发的,难怪截屏自动保存的名字是 ...
截图工具 -
jijiqw:
是注解不是注释。。。
Spring @Transactional (一) -
letueo:
[b][b][b][b][b][b][b][b][b][b][ ...
Spring @Transactional (一)
好久没博一把了,今天总结一下这两天学习JDBC的内容吧!
JDBC API包含在JDK中,被分为两个包:java.sql和javax.sql。java.sql包定义了访问数据库的接口和类,其中一些接口由驱动程序提供商来实现。
1、Driver接口
jdbc.sql.Driver是所有JDBC驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同的厂商实现该接口的类名是不同的,下面列出主要数据库的JDBC驱动的类名。
* com.microsoft.jdbc.sqlserver.SQLServerDriver,这是sqlserver2000的JDBC驱动类名,它要单独下载,安装完毕后会看到三个包:msbase.jar包,mssqlserver.jar包和 msutil.jar包。
* orcle.jdbc.driver.OracleDriver,Oracle的JDBC驱动不需要单独下载,在Oracle数据库产品的安装目录下就可以找到。具体在%oracle_home%\ora92\jdbc\lib目录下就可以找到。
* com.mysql.jdbc.Driver,以前的Mysql驱动类是:org.gjt.mm.mysql.Driver,新的MySql JDBC驱动程序版本为了向后兼容,保留了这个类,这个驱动也需要单独下载。
在具体的程序中不需要直接去访问这些实现了Driver接口的类,而是由驱动程序管理器去调用这些驱动。我们通过JDBC驱动管理器注册每个驱动程序,使用驱动程序管理器类提供的方法来建立数据库的连接,而驱动程序管理器类的连接方法则调用驱动程序类的连接方法connect()来建立数据库的连接。
加载JDBC驱动是调用Class类的静态方法forname(),向其传递要加载的JDBC驱动的类名。在运行时,类加载器从classpath环境变量中定位和加载JDBC驱动类。
2 、建立到数据库的连接
DriverManager类的getConnection()方法建立到数据库的连接,返回一个Connection对象。在DriverManager类中提供了3个重载的getConnection()方法。
* public static Connection getConnection(String url) throws SQLException
* public static Connection getConnection(String url,String urer,String password) throws SQLException
* public static Connection getConnection(String url,Properties) throws SQLException ,该方法需要数据库的URL和java.util.Properties对象。Properties包含了用于特定数据库所需要的参数,以键-值对的方式指定连接参数。通常情况下,至少需要指定user和password属性。
数据库URL用于标示一个被注册的驱动程序,驱动程序管理器通过这个URL选择正确的驱动程序,从而建立到数据库的连接,jdbc URL的语法如下:
jdbc:subprotocol:subname,整个URL分为三个部分:协议(只有jdbc一种):子协议:子名称。下面给出常用数据库的JDBC URL的形式。
* SQL Server200
jdbc:microsoft:sqlserver://localhost:1433;database=数据库名
* Oracle
jdbc:oracle:thin:@localhost:1521:ORCL
* MySql
jdbc:mysql://localhost:3306/datasource_name
书接上文。上篇说到与数据库建立连接了。下面是之后的工作。数据库连接被用于向数据库服务器发送命令和SQL语句,在建立连接之后,需要对数据库进行访问,执行SQL语句。在java.sql包中给我们提供了三个接口,分别定义了对数据库调用的不同方式,这三个接口是:Statement、 PreparedStatement和CallableStatement。
访问数据库
1、Statement
得到Connection对象后,该对象调用它的createStatement()方法创建了一个Statement对象。Statement对象用于执行静态SQL语句,返回执行的结果。Statement接口中定义了下列方法用于执行SQL语句。
(1)ResultSet executeQuery(String sql) throws SQLException
(2)int extcuteUpdate(String sql) throws SQLException ,该方法用于执行参数指定的SQL语句:INSERT、UPDATE或者DELETE语句。另外,该方法也可以执行SQL DDL语句,例如:create table
(3)boolean execute(String sql) throws SQLException ,该方法用于执行多个结果集的SQL语句。
(4)int [] executeBatch() throws SQLExecption ,该方法允许我们向数据库提交一批命令,然后一起执行。如果执行成功,返回值是一个更新行数的数组。可以通过Statement对象的addBatch()方法将Sql语句加入到命令列表中。如:
Statement stmt=conn.createStatement();
stmt.addBatch("具体的sql语句1");
stmt.addBatch("具体的sql语句2");
stmt.addBatch("具体的sql语句3");......
stmt.addBatch("具体的sql语句n");
stmt.executeBatch();
2、ResultSet
Statement中的方法返回ResultSet对象。ResultSet对象以逻辑表格的形式封装了执行数据库操作的结果集,ResultSet接口由数据库厂商实现。ResultSet对象维护了一个指向当前数据行的游标,初始的时候,游标在第一行之前,可以通过ResultSet对象的next方法移动到下一行。该方法为:
boolean next() throws SQLException ,ResultSet接口中定义了很多方法来获得当前行中列的数据,根据字段类型的不同,采用不同的方法来获取数据。如:getArray(),getString(),getInt,getObject().....
这些方法中,又提供了两种形式的调用,一种是以列的索引作为参数(从1开始),一种是以列名作为参数,例如,对于getString()方法,两种形式为:
1 、 String getString(int columnIndex) throws SQLException
2 、 String getString(String columnName) throws SQLException
如果不知道要获取的列的数据类型,可以一律采用getString()方法来得到String类型的数据。
3、PreparedStatement
该接口用于执行不同参数,同一个SQL语句的情况。PreparedStatement接口从Statement接口继承而来。调用Connection 对象的prepareStatement方法得到PreparedStatement对象。PreparedStatement对象所代表的sql语句中的参数用问号(?)来表示,调用PreparedStatement对象的setXXX方法来设置这些参数。该方法有两个参数,第一个要设置的是参数的索引(从1开始),第二个参数要设置是参数的值。看下面一段代码:
String sql="select * from student where stuID=? and stuname=?";
conn=DriverManager.getConnection(url);
PreparedStatement pstmt=cnn.prepareStatement(sql);
pstmt.setInt(1,2067502009);
pstmt.setString(2,"liwei");
stmt.executeUpdate();
4、CallableStatement
该接口对象用于执行SQL存储过程。CallableStatement接口从 PreparedStatement接口继承而来,可以通过调用Connection对象的prepareCall()方法来得到 CallableStatement对象。在执行存储过程前,凡是存储过程中类型为OUT的参数必须注册,可以通过CallableStatement对象的registerOutParameter()方法来完成。对于类型为IN的参数,可以利用setXXX()方法来设置参数的值,我们看下面这段代码:
CallableStatement cstmt=conn.prepareCall("call 存储过程名a(?,?)");
cstmt.registerOutParameter(2,java.sql.Types.INTEGER);
cstmt.setInt(1,2563);
cstmt.execute();
int param =cstmt.getInt(2);
存储过程名a有两个参数,第一个为IN类型,第二个参数为OUT类型。因为有一个OUT类型的参数,所以在执行这个存储过程之前,我们调用 registerOutParameter()方法注册存储过错的第二个参数。registerOutParameter()方法的第二个参数用于指定存储过程参数的JDBC类型,该类型在java.sql.Types中定义。在执行存储过程后,可以直接调用CallableStatement对象的 getXXX()方法取出OUT参数的值。
JDBC API包含在JDK中,被分为两个包:java.sql和javax.sql。java.sql包定义了访问数据库的接口和类,其中一些接口由驱动程序提供商来实现。
1、Driver接口
jdbc.sql.Driver是所有JDBC驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同的厂商实现该接口的类名是不同的,下面列出主要数据库的JDBC驱动的类名。
* com.microsoft.jdbc.sqlserver.SQLServerDriver,这是sqlserver2000的JDBC驱动类名,它要单独下载,安装完毕后会看到三个包:msbase.jar包,mssqlserver.jar包和 msutil.jar包。
* orcle.jdbc.driver.OracleDriver,Oracle的JDBC驱动不需要单独下载,在Oracle数据库产品的安装目录下就可以找到。具体在%oracle_home%\ora92\jdbc\lib目录下就可以找到。
* com.mysql.jdbc.Driver,以前的Mysql驱动类是:org.gjt.mm.mysql.Driver,新的MySql JDBC驱动程序版本为了向后兼容,保留了这个类,这个驱动也需要单独下载。
在具体的程序中不需要直接去访问这些实现了Driver接口的类,而是由驱动程序管理器去调用这些驱动。我们通过JDBC驱动管理器注册每个驱动程序,使用驱动程序管理器类提供的方法来建立数据库的连接,而驱动程序管理器类的连接方法则调用驱动程序类的连接方法connect()来建立数据库的连接。
加载JDBC驱动是调用Class类的静态方法forname(),向其传递要加载的JDBC驱动的类名。在运行时,类加载器从classpath环境变量中定位和加载JDBC驱动类。
2 、建立到数据库的连接
DriverManager类的getConnection()方法建立到数据库的连接,返回一个Connection对象。在DriverManager类中提供了3个重载的getConnection()方法。
* public static Connection getConnection(String url) throws SQLException
* public static Connection getConnection(String url,String urer,String password) throws SQLException
* public static Connection getConnection(String url,Properties) throws SQLException ,该方法需要数据库的URL和java.util.Properties对象。Properties包含了用于特定数据库所需要的参数,以键-值对的方式指定连接参数。通常情况下,至少需要指定user和password属性。
数据库URL用于标示一个被注册的驱动程序,驱动程序管理器通过这个URL选择正确的驱动程序,从而建立到数据库的连接,jdbc URL的语法如下:
jdbc:subprotocol:subname,整个URL分为三个部分:协议(只有jdbc一种):子协议:子名称。下面给出常用数据库的JDBC URL的形式。
* SQL Server200
jdbc:microsoft:sqlserver://localhost:1433;database=数据库名
* Oracle
jdbc:oracle:thin:@localhost:1521:ORCL
* MySql
jdbc:mysql://localhost:3306/datasource_name
书接上文。上篇说到与数据库建立连接了。下面是之后的工作。数据库连接被用于向数据库服务器发送命令和SQL语句,在建立连接之后,需要对数据库进行访问,执行SQL语句。在java.sql包中给我们提供了三个接口,分别定义了对数据库调用的不同方式,这三个接口是:Statement、 PreparedStatement和CallableStatement。
访问数据库
1、Statement
得到Connection对象后,该对象调用它的createStatement()方法创建了一个Statement对象。Statement对象用于执行静态SQL语句,返回执行的结果。Statement接口中定义了下列方法用于执行SQL语句。
(1)ResultSet executeQuery(String sql) throws SQLException
(2)int extcuteUpdate(String sql) throws SQLException ,该方法用于执行参数指定的SQL语句:INSERT、UPDATE或者DELETE语句。另外,该方法也可以执行SQL DDL语句,例如:create table
(3)boolean execute(String sql) throws SQLException ,该方法用于执行多个结果集的SQL语句。
(4)int [] executeBatch() throws SQLExecption ,该方法允许我们向数据库提交一批命令,然后一起执行。如果执行成功,返回值是一个更新行数的数组。可以通过Statement对象的addBatch()方法将Sql语句加入到命令列表中。如:
Statement stmt=conn.createStatement();
stmt.addBatch("具体的sql语句1");
stmt.addBatch("具体的sql语句2");
stmt.addBatch("具体的sql语句3");......
stmt.addBatch("具体的sql语句n");
stmt.executeBatch();
2、ResultSet
Statement中的方法返回ResultSet对象。ResultSet对象以逻辑表格的形式封装了执行数据库操作的结果集,ResultSet接口由数据库厂商实现。ResultSet对象维护了一个指向当前数据行的游标,初始的时候,游标在第一行之前,可以通过ResultSet对象的next方法移动到下一行。该方法为:
boolean next() throws SQLException ,ResultSet接口中定义了很多方法来获得当前行中列的数据,根据字段类型的不同,采用不同的方法来获取数据。如:getArray(),getString(),getInt,getObject().....
这些方法中,又提供了两种形式的调用,一种是以列的索引作为参数(从1开始),一种是以列名作为参数,例如,对于getString()方法,两种形式为:
1 、 String getString(int columnIndex) throws SQLException
2 、 String getString(String columnName) throws SQLException
如果不知道要获取的列的数据类型,可以一律采用getString()方法来得到String类型的数据。
3、PreparedStatement
该接口用于执行不同参数,同一个SQL语句的情况。PreparedStatement接口从Statement接口继承而来。调用Connection 对象的prepareStatement方法得到PreparedStatement对象。PreparedStatement对象所代表的sql语句中的参数用问号(?)来表示,调用PreparedStatement对象的setXXX方法来设置这些参数。该方法有两个参数,第一个要设置的是参数的索引(从1开始),第二个参数要设置是参数的值。看下面一段代码:
String sql="select * from student where stuID=? and stuname=?";
conn=DriverManager.getConnection(url);
PreparedStatement pstmt=cnn.prepareStatement(sql);
pstmt.setInt(1,2067502009);
pstmt.setString(2,"liwei");
stmt.executeUpdate();
4、CallableStatement
该接口对象用于执行SQL存储过程。CallableStatement接口从 PreparedStatement接口继承而来,可以通过调用Connection对象的prepareCall()方法来得到 CallableStatement对象。在执行存储过程前,凡是存储过程中类型为OUT的参数必须注册,可以通过CallableStatement对象的registerOutParameter()方法来完成。对于类型为IN的参数,可以利用setXXX()方法来设置参数的值,我们看下面这段代码:
CallableStatement cstmt=conn.prepareCall("call 存储过程名a(?,?)");
cstmt.registerOutParameter(2,java.sql.Types.INTEGER);
cstmt.setInt(1,2563);
cstmt.execute();
int param =cstmt.getInt(2);
存储过程名a有两个参数,第一个为IN类型,第二个参数为OUT类型。因为有一个OUT类型的参数,所以在执行这个存储过程之前,我们调用 registerOutParameter()方法注册存储过错的第二个参数。registerOutParameter()方法的第二个参数用于指定存储过程参数的JDBC类型,该类型在java.sql.Types中定义。在执行存储过程后,可以直接调用CallableStatement对象的 getXXX()方法取出OUT参数的值。
发表评论
-
Servlet上传文件
2012-02-07 23:58 1493准备工作:要到http://commons.apache.or ... -
成为Java高手需要达到的25个学习目标--经典
2012-01-29 16:07 1351本文将告诉你学习Java需 ... -
Timer, Quartz 和 Spring 实现作业调度
2011-11-28 15:43 1175一、java.util.Timer ... -
Java 产生不重复的随机数
2011-06-22 23:32 2361int numberCount = 6; ... -
Date类学习总结(Calendar Date 字符串 相互转换 格式化)
2011-06-20 16:12 1663Date类学习总结 1.计算某一月份的最大天数 ... -
jsp中的cookie用法小实例
2011-06-20 00:13 2492这个小实例有三个页面 index.jsp页面内容如下: Y ... -
JS实现简单的增删改查
2011-06-19 23:41 12962<%@ page language="ja ... -
Jsp 动态显示系统时间
2011-06-19 23:24 4899<%@ page language=" ... -
java 动态显示时间
2011-06-19 23:13 4060import java.util.Date; p ... -
js 动态显示时间
2011-06-19 22:53 1833<%@ page language=" ... -
HTML 显示系统时间
2011-06-19 22:13 7888代码1:(显示静态时间) <script type=& ... -
JavaScript 动态显示系统时间
2011-06-19 19:36 2081JavaScript 动态显示系统时间 <html ... -
两例JavaScript 获取当前系统日期和时间
2011-06-19 19:20 1252两例JavaScript 获取当前系统日期和时间 QUOTE ... -
java五种JSP页面跳转方法详解
2011-06-19 17:08 14771. RequestDispatcher.forward() ... -
Java Object方法
2011-06-19 16:47 1354package com.abin.test.connectio ... -
Java 数组,List,Itarator循环
2011-06-19 16:01 2307package com.abin.test.connect ... -
JAVA DBClass操作数据库,这样算不算单列模式
2011-06-19 14:53 1255到底怎样才算单列模式,单列模式事什么概念 package c ... -
Oracle日期函数集锦
2011-06-16 20:55 933Oracle日期函数集锦(一) 一、 常用日期数据格式 1 ... -
java 页面传送数组
2011-06-15 14:56 25971.可以通过嵌入java代码调用session或者reques ... -
java Calendar当前时间
2011-06-14 13:40 1665Calendar c = Calendar.getIn ...
相关推荐
**JDBC(Java Database Connectivity)简介** JDBC是Java编程语言中用来规范客户端程序如何访问数据库的应用程序接口,由Sun ...在提供的压缩包文件中,`JDBC笔记.doc`可能包含了更详细的讲解和示例,建议参考学习。
这份"很详细的jdbc笔记 决定经典"显然是一个珍贵的学习资源,它涵盖了JDBC的基础和高级概念,对于想要深入理解数据库操作的Java开发者来说极具价值。下面我们将详细探讨JDBC的一些关键知识点。 1. **JDBC驱动程序**...
**JDBC笔记 李勇** JDBC(Java Database Connectivity)是Java编程语言中用来规范应用程序如何访问数据库的应用程序编程接口,提供了诸如连接数据库、发送SQL语句、处理结果集等功能。李勇老师的JDBC学习笔记主要...
本篇JDBC笔记详细介绍了JDBC编程的相关知识点,包括数据库连接、SQL语句执行、事务处理等,同时也涉及到了对MySQL数据库的增删改查操作和事务的ACID属性等重要概念。 首先,笔记中提到了JDBC驱动的概念。JDBC驱动是...
Day1–JDBC概述+JDBC完成CRUD+DAO设计 1.JDBC概述 1.1 什么是持久化(persistence): 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。 保存数据: 内存中: 掉电之后,数据就没了. 磁盘...
"JDBC 笔记" 本资源摘要信息主要介绍了 Java 数据库连接(JDBC)的相关知识,包括单例模式、JDBC 概述、JDBC 实现原理、JDBC 开发主要类和 JDBC 开发步骤等内容。 单例模式 单例模式是一种常用的软件设计模式,...
**JDBC笔记 方立勋** JDBC(Java Database Connectivity)是Java编程语言中用来规范应用程序如何访问数据库的应用程序接口(API),它为开发者提供了一种标准的、面向对象的方式来访问各种不同类型的数据库系统。...
### JDBC核心知识点详解 #### 一、概述 JDBC(Java Database Connectivity)是Java语言访问数据库的标准接口集合,实质上是调用者(通常是开发者或应用程序)与数据库供应商之间的一种协议。这种协议允许开发者...
JAVA 中JDBC笔记
JDBC笔记.md
自己整理jdbc笔记,跟大家共享下。。 自己整理jdbc笔记,跟大家共享下。。 自己整理jdbc笔记,跟大家共享下。。
在学习过程中,阅读提供的"jsp 基础教程.doc", "jsp学习 笔记.doc", "JDBC 笔记.doc", "jsp 笔记二.doc"文档,将有助于你深入理解JSP和JDBC的使用方法和最佳实践。这些笔记详细阐述了相关概念、示例代码和常见问题,...
【JDBC笔记】 JDBC(Java Database Connectivity)是Java编程语言与各种数据库进行交互的一组标准接口和类库。它是Sun Microsystems为Java开发者定义的一套规范,允许Java应用程序通过Java API来连接和操作数据库。...
【JDBC基础概念】 JDBC(Java Database Connectivity)是Java编程语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。由Sun Microsystems公司开发并随Java SDK发布,...
在本篇JDBC学习笔记中,我们将深入探讨JDBC的基础知识、核心概念以及实际应用。 一、JDBC基础 1. JDBC驱动程序:JDBC驱动是连接Java应用程序和数据库之间的桥梁。根据实现方式,JDBC驱动分为四种类型:类型1(JDBC...
Java JDBC综合笔记详细介绍了使用Java语言通过JDBC操作数据库的基本方法和技巧,包括数据库的创建、表的操作、数据的增删改查、SQL语句的使用等。 在数据库的创建方面,笔记中提到了如何创建数据库以及如何设置...
Java JDBC(Java Database Connectivity)是Java编程语言与各种数据库之间通信的标准接口,它允许Java应用程序连接到数据库并执行SQL操作。对于初学者来说,理解JDBC的基本概念和使用方法是至关重要的。 首先,JDBC...