珠海建站网站模板,义乌外贸公司联系方式,罗湖网站建设,管局备案网站JDBC#xff08;Java Data Base Connectivity的缩写#xff09;是Java程序操作数据库的API#xff0c;也是Java程序与数据库相交互的一门技术。
JDBC是Java操作数据库的规范#xff0c;由一组用Java语言编写的类和接口组成#xff0c;它对数据库的操作提供基本方法#…JDBCJava Data Base Connectivity的缩写是Java程序操作数据库的API也是Java程序与数据库相交互的一门技术。
JDBC是Java操作数据库的规范由一组用Java语言编写的类和接口组成它对数据库的操作提供基本方法但对于数据库的细节操作由数据库厂商进行实现使用JDBC操作数据库需要数据库厂商提供数据库的驱动程序。
关于Java程序与数据库相交互的示意图如下图所示。
JDBCJava Database Connectivity Java数据库连接,是一组用来按照统一方式访问数据库的API。它向程序员提供了独立于数据库的统一接口可以使开发人员不必考虑所用的特定数据库便可编写应用程序实现了Java与数据库的互连。
由一组用Java语言编写的类和接口组成。它能够与数据库建立连接、发送SQL语句、处理结果JDBC的主要接口
java.sql.Driver:任何驱动程序类都应该实现这个接口。读取数据库驱动器的信息、提供connect方法用于建立访问数据库所用的Connection对象
java.sql.DriverManager:用于管理JDBC驱动程序一个接口使用此接口能够获得与相应数据库的连接
java.sql.Connection:表示驱动程序与数据库之间的连接。使用此连接可以创建一个Statement对象
java.sql.Statement:能对数据库执行SQL语句并得到返回的结果
java.sql.ResultSet:表示从数据库服务器返回的结果集。 ResultSet 有如下几个方法
1. boolean next()
用于将 ResultSet定位到下一行。
ResultSet最初是定位在第0行上的此时应该先调用 next()方法将其定位到第1行上然后才可输出。当 ResultSet已经到了最后一行时再调用next()方法则返回 false。
2. getXXX()
当 ResultSet已经定位在某一行上时,使用 getXxx ()方法得到这一行上单个字段的值。针对不同的字段类型,调用不同的getXxx ()方法(getString(col), getDate(col), getInt(col),…)
例如果表中的第一个字段字段名为“name”是文本型的 则可以使用getString
(1)或 getString(“name”)来得到它的值。
如果表中的第三个字段字段名为“score”是数值型的 则可以使用getFloat(3)或 getFloat(“score”)来得到它的值。显示结果集中所有记录的前两列
while(rs.next())
{
name rs.getString(1);
phone rs.getString(2);
System.out.println(name,phone);
}
JDBC连接数据库的过程
在了解了JDBC与数据库后下面向大家介绍使用JDBC操作数据的开发流程其关键步骤如下1注册数据库驱动 加载数据库驱动注册到驱动管理器Class.forName(“com.mysql.jdbc.Driver”);
2构建数据库连接URL “JDBC协议IP地址或域名端口数据库名称”
MySQL连接URL的字符串为“jdbc:mysql://localhost:3306/test”
3获取Connection对象
注册了数据库驱动及构建数据库URL后通过驱动管理器获取数据库的连接ConnectionConnection对象是JDBC封装的数据库连接对象创建此对象后才可以对数据库进行相关操作DriverManager.getConnection(url, username, password);
使用JDBC驱动程序访问数据库
获取相应数据库的jdbc驱动程序并将它们保存在指定的位置, 然后重新启动tomcat服务
连接的具体步骤以打电话通知同学为你带书为例…编写程序的具体步骤编写程序
加载驱动程序---打开手机、找到电话簿亲人、同学、朋友
定义所要连接数据库的地址---定位到同学
建立与数据库的连接--拨号给他打电话
建立语句对象--接通后你对象可以跟他数据库交流了
声明并执行SQL语句--任务帮你带书
处理返回的结果 --给带或是不能带
关闭对象--挂电话
首先应该导入java.sql包。语句为 % page importjava.sql.* %
利用Class.forName()方法加载某一个数据库的驱动程序。
语法Class.forName(“JDBC驱动程序类”);
方法例1使用JDBC/ODBC桥驱动程序Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
例2使用SQLServer的驱动程序Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);
经过以上其中之一语句的声明后驱动程序就会自动地加载。
注意如果classpath路径中没有找到所需的驱动程序则会抛出 ClassNotFoundException异常。
通过此步骤定义要连接的数据库资源
String ODBCURL jdbc:odbc:dbName;
String sqlserverURL jdbc:microsoft:sqlserver://host:1433;DatabaseNamedbName ;
String mysqlURL jdbc:mysql://host:port/dbName ;
String oracleURL jdbc:oracle:thin:host:port:dbName ;
不同数据库连接的地址不同这点需要特别注意
URL由3部分组成各个部分用冒号间隔格式如下jdbc:子协议:子名称
JDBC URL的3部分可分解如下jdbcJDBC中的协议就是jdbc。
子协议数据库驱动程序名或数据库连接机制的名称。子协议的典型示例为oracle它用于连接oracle数据库。
子名称一种标记数据库的方法。子名称根据子协议的不同而不同使用子名称的目的是为定位数据库
例如 jdbc:oracle:thin:[ip]:[port]:[sid]
子协议现在是 oracle子名称现在由四部分构成包括驱动程序类型thin、数据库服务器的IP地址、提供服务的端口号、数据库的名字
语法Connection conDriverManager.getConnection(url,”登录数据库用户名”,”登录密码”);
例以SQLServer连接数据库book为例用户名为sa,密码为123
Class.forName( com.microsoft.jdbc.sqlserver.SQLServerDriver );
String connStr jdbc:microsoft:sqlserver://host:1433;DatabaseNamebook;
Connection conn DriverManager.getConnection(connStr, sa, 123);
利用 Connection接口à createStatement() 方法创建语句对象。
例Statement stmtconn.createStatement();
语句对象用于执行SQL语句。该对象负责将SQL语句传递给数据库管理系统执行声明SQL语句并将该语句通过Statement对象提交给服务器进行执行。
String sql SELECT * FROM book ;//上面的语句用于从book表中查询所有记录。
ResultSet resultSetstmt.executeQuery(sql);//该语句将sql命令提交给数据库服务器进行执行并将执行结果存储在ResultSet对象中进行执行。
Statement接口主要有如下三个方法 1. ResultSet executeQuery(String sql)以sql语句为参数执行sql查询语句 返回ResultSet结果集一个二维表
例如
Statement stmtcon.createStatement();
Stringsql SELECT * FROM book ;
ResultSet rsstmt.executeQuery(sql);
2. int executeUpdate(String sql)
以sql语句为参数执行sql更新语句及DDL语句如添加、删除或修改操作返回被受影响记录的条数。例如
Statement stmtcon.createStatement();
String sql delete FROM book where bookid ‘12335’ ;
int istmt.executeUpdate(sql);
System.out.println(i);
3. boolean execute(String sql)
用于执行实现不知道类型的SQL语句既可以执行查询语句也可以执行更新语句。
常用于动态的处理未知的SQL语句事先无法知道该SQL语句的具体类型及执行的返回值。
执行参数部分的SQL语句
当SQL语句的执行结果是一个ResultSet结果集时本方法返回true并可以通过StatementàgetResultSet()方法得到返回的结果集
当SQL语句执行后没有返回的结果集时该方法返回false
Statement对象负责将SQL语句传递给数据库管理系统执行返回的是一个ResultSet的对象。 ResultSet对象称为结果集是符合条件的所有行的集合。
可以通过(first(), last(), previous(), next(), absolute(int), …) 方法浏览可滚动结果集中的内容rs.close();//关闭结果集
stmt.close();//关闭语句对象
con.close();//关闭连接
将打开的资源关闭。注意资源关闭的顺序和打开的顺序恰恰相反。
异常处理 数据库访问中可能会发生异常如无法连接需要做异常处理
编写Servlet时需要将访问数据库代码放在try-catch结构中
try { …}catch(SQLExceptionex){ …}
在编写JSP页面时数据库操作可以不写try-catch, 服务器将JSP编译成Servlet时会自动加上try-catch
例7.2 通过JDBC连接MySQL数据库
(1)创建名称为10.1的动态Web项目将MySQL数据库的驱动包添加至项目的构建路径构建开发环境
(2) 创建程序中的主页index.jsp,在该页面中加载数据库驱动并创建数据库连接
应用程序为了能和数据库交互信息必须首先和数据库建立连接。目前在开发中常用的连接数据库的方式是加载JDBC-数据库驱动程序。
用Java语言编写的数据库驱动程序称作JDBC-数据库驱动程序。JDBC可以调用本地的JDBC-数据库驱动程序和相应的数据库建立连接如图所示。
使用JDBC-数据库驱动程序方式和数据库建立连接需要经过2个步骤
①加载JDBC-数据库驱动程序
② 和指定的数据库建立连接。
使用JDBC-数据库驱动程序访问数据库时必须要保证连接数据库的应用程序所驻留的计算机上安装有相应JDBC-数据库驱动程序比如Tomcat服务器上的某个Web应用程序想访问MySQL数据库管理系统所管理的数据库那么Tomcat服务器所驻留的计算机上必须要安装MySQL提供的JDBC-数据库驱动程序。
登录MySQL的官方网站www.mysql.com下载JDBC-数据库驱动程序JDBC Driver for MySQL。本教材下载的是mysql-connector-java-5.1.28.zip。
解压后的mysql-connector-java-5.1.28-bin.jar复制到Tomcat服务器所使用的JDK的扩展目录中。应用程序加载MySQL的JDBC-数据库驱动程序代码如下 try{
Class.forName(com.mysql.jdbc.Driver); } catch(Exception e){ }
Java.sql包中的DriverManager类有两个用于建立连接的类方法
Connection getConnection(java.lang.String, java.lang.String, java.lang.String)
Connection getConnection(java.lang.String)
数据库服务器占用的端口是3306假设MySQL数据库服务器所驻留的计算机的IP地址是192.168.100.1。应用程序要和warehouse建立连接用户的id和密码分别是root、99 那么使用Connection getConnection(java.lang.String, java.lang.String, java.lang.String)
方法建立连接的代码如下
try{ String uri jdbc:mysql:// 192.168.100.1:3306/warehouse
String user root;
String password 99;
con DriverManager.getConnection(uri,user,password); }catch(SQLException e){
System.out.println(e);
}
使用Connection getConnection(java.lang.String) 方法建立连接的代码如下
try{ String uri jdbc:mysql:// 192.168.100.1:3306/warehouse?userrootpassword99;
con DriverManager.getConnection(uri);
}catch(SQLException e){
System.out.println(e);
}
在某些Web程序中需要避免操作数据库出现中文乱码,那么需要使用
Connection getConnection(java.lang.String) 方法建立连接连接中的代码是假设用户是root其密码是99
String uri jdbc:mysql://127.0.0.1/warehouse?userrootpasswordcharacterEncodinggb2312;
con DriverManager.getConnection(uri);
应用程序一旦和某个数据库建立连接就可以通过SQL语句和该数据库中的表交互信息比如查询、修改、更新表中的记录
JDBC在Java Web中的应用
1、开发模式
在Java Web开发使用JDBC应遵循MVC的设计思想从而使用Web程序拥有一定的健壮性、可扩展性。JDBC应用于Java Web开发中处于MVC之中的模型层位置如下图所示。
2、分页查询
分页查询是Java Web开发之中十分常用的技术。在数据库量非常大的情况下不适合将所有数据显示到一个页面之中既给查看带来有便又占用了程序及数据库的资源此时就需要对数据进行分页查询。
通过JDBC实现分页查询的方法有很多种而且不同的数据库机制也提供了不同的分页方式两种非常典型的分页方法。
1、通过ResultSet的光标实现分页
2、通过数据库机制进行分页
连接MySQL数据库和连接Oracle数据库的方法非常类似。只是有两个地方需要注意一下
1. 需要把MySQL的驱动程序mysql-connector-java-5.0.4-bin.jar部署到“/WEB-INF/lib/”下。MySQL驱动程序可以从其官方网站www.mysql.com上下载
2). 注册驱动程序和获取连接的语句变为
Class.forName(com.mysql.jdbc.Driver);或者Class.forName(org.gjt.mm.mysql.Driver);
Connection con DriverManager.getConnection(jdbc:mysql://[ip]:[port]/[sid],Login,password);
例
%page contentTypetext/html; charsetGBK %
%page importjava.sql.* %
%
Class.forName(com.mysql.jdbc.Driver);
Connection con DriverManager.getConnection(jdbc:mysql://localhost:3306/book,root,“123);
Statement stmt con.createStatement();
stmt.executeUpdate(create table table1(id int, name varchar(30)));
stmt.executeUpdate(insert into table1 values(10, java));
stmt.executeUpdate(insert into table1 values(20, JSP));
out.print(table1 has been created!);
stmt.close(); con.close();
%