jdbc连接数据库

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

演示:配置ODBC数据源
JDBC驱动 5-4
纯Java驱动
由JDBC驱动直接访问数据库 优点:100% Java,快又可跨平台 缺点:访问不同的数据库需要下载专用的JDBC驱动
Java 应用程序
JDBC API
JDBC 驱动
DB Server
JDBC驱动 5-5
使用纯Java驱动方式进行直连
1、下载数据库厂商提供的驱动程序包 2、将驱动程序包引入工程中 3、编程,通过纯Java驱动方式与数据库建立连接
JDBC驱动 5-2
桥连
将对JDBC API的调用,转换为对另一组数据库连接API的调用 优点:可以访问所有ODBC可以访问的数据库 缺点:执行效率低、功能不够强大
DB Server Java 应用程序
JDBC API
JDBC-ODBC桥
ODBC API
ODBC层
JDBC驱动 5-3
使用JDBC-ODBC进行桥连
JDBC驱动 5-1
JDBC驱动由数据库厂商提供
在个人开发与测试中,可以使用JDBC-ODBC桥连方式 在生产型开发中,推荐使用纯Java驱动方式
Java 应用程序 JDBC API JDBC Driver Manager JDBC–ODBC桥 ODBC 纯Java 驱动
DB Server
DB Server
1、在控制面板ODBC数据源系统DSN中配置数据源 2、编程,通过桥连方式与数据库建立连接
JDBC-ODBC桥驱动类 的完全限定类名
------语法------
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con =DriverManager.getConnection("jdbc:odbc:news","sa","sa"); 数据源名称
找不到合适的驱动类,原因:没有把数据库驱动包引入工程
请单独建立一个类ConnectionManager,专门负责建立数据 库连接、以及关闭连接,并思考这样做带来的好处是什么 完整代码实现
好处在于:既便于管理、又可以提高代码的复用性
PreparedStatement
PreparedStatement 接口继承 Statement接口 PreparedStatement比普通的Statement对象使用起来更 加灵活,更有效率
使用Statement插入数据 2-2
——代码片断—— public static void main(String[] args) { Connection con = null; 使用纯Java驱动方式向FirstLevelTitle表中 完整代码实现 Statement statement = null; 插入一条记录 try { String strSql = "insert into FirstLevelTitle values(1,'军事','网管',getdate())"; try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); } catch (ClassNotFoundException e) { 载入sql server数据 System.out.println("无法找到驱动类"); 库驱动类 } 建立连接 con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;" +"DatabaseName=news","sa","sa"); statement = con.createStatement(); statement.executeUpdate(strSql); } catch (SQLException sqlE) { sqlE.printStackTrace(); 执行sql语句 } finally { //释放连接 } }
JDBC程序的工作模板
try { 注册JDBC驱动 Class.forName(JDBC驱动类); } catch (ClassNotFoundException e) { System.out.println("无法找到驱动类"); 获得数据库连接 } 必须处理的异常 try { Connection con=DriverManager.getConnection(JDBC URL,数据库用户名,密码); JDBC URL用来标识数据库 Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1"); while (rs.next()) { 发送Sql语句 int x = rs.getInt("a"); String s = rs.getString("b"); 处理结果 float f = rs.getFloat("c"); } 释放资源 con.close(); } catch (SQLException e) { e.printStackTrace(); 必须处理的异常 }
2
操作步骤
字段名称 Id TitleName Creator
使用Statement插入数据 使用PreparedStatement 增、删、改、查数据
CreateTime 创建时间
使用Statement插入数据 2-1
完整代码实现 ——代码片断—— public static void main(String[] args) { 使用桥连方式向FirstLevelTitle表中插入一条记录 Connection con = null; Statement statement = null; try { String strSql = "insert into FirstLevelTitle values(1,'军事','网管',getdate())"; 载入JDBC-ODBC桥驱动类 try { 异常处理 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (ClassNotFoundException e) { System.out.println("无法找到驱动类"); 建立连接 } con = DriverManager.getConnection("jdbc:odbc:news","sa","sa"); statement = con.createStatement(); 异常处理 statement.executeUpdate(strSql); 执行sql语句 } catch (SQLException sqlE) { sqlE.printStackTrace(); } finally { closeStatement(statement); 数据库连接使用完 closeConnection(con); 毕,及时释放 } }
小结 2
在使用纯Java驱动方式进行数据库连接时,如果程序在运行 时抛出异常:
java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=news 那么出错的原因是什么?如何解决?
演示:在工程中引入JDBC驱动程序包
小结 1
JDBC桥连与纯Java驱动两种方式的优缺点分别是什么? JDBBaidu Nhomakorabea URL的作用是什么?
JDBC应用
要求对新闻标题进行管理:
1、新闻标题存储在Sql Server 2000中 2、通过JDBC对新闻标题进行增、删、改、查操作
1
创建数据表:FirstLevelTitle 字段说明 序号 标题名称 创建者 数据类型 int varchar varchar datetime 大小 4 50 50 8
数据库服务器
3
客户端
Statement ResultSet
DriverManager
1
DriverManager :依据数据库的不同,管理JDBC驱动 Connection :负责连接数据库并担任传送数据的任务 Statement :由 Connection 产生、负责执行SQL语句 ResultSet:负责保存Statement执行后所产生的查询结果
JDBC 驱动
DriverManager
提供者:sun公司 作用:载入各种不同的JDBC驱动
Sql Server
Oracle
JDBC 驱动
提供者:数据库厂商 作用:负责连接各种不同的数据库
JDBC API
JDBC API可做三件事:与数据库建立连接、执行SQL 语句、处理结果
Connection
2 4
------语法-----数据库名称
String URL="jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=news"; Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); Connection con = DriverManager.getConnection(URL,"sa","sa"); sql server数据库驱动类的 完全限定类名
Statement 接口
PreparedStatement接口 (预编译的 SQL 语句)
当 SQL 语句将运行多次时,尽 量使用PreparedStatement,以 便提高运行效率
使用PreparedStatement插入数据
public class NewsFirstTitleDB2 { public static void main(String[] args) { Connection con = null; PreparedStatement pStatement = null; try { SimpleDateFormat hmFromat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 参数化的查询语句 con = ConnectionManager.getConnection(); String strSql = "insert into FirstLevelTitle values(?,?,?,?)"; pStatement = con.prepareStatement(strSql); pStatement.setInt(1, 1); 设置每个 ? 参数的值, pStatement.setString(2, "军事"); 列号从1开始 pStatement.setString(3, "管理员"); pStatement.setString(4, hmFromat.format(new Date())); pStatement.executeUpdate(); 执行sql语句 } catch (SQLException sqlE) { sqlE.printStackTrace(); } finally { ConnectionManager.closeStatement(pStatement); ConnectionManager.closeConnection(con); } } }
Java 应用程序
JDBC API
提供者:sun公司 内容:供程序员调用的接口与类,集成 在java.sql和javax.sql包中,如:
DriverManager类 Connection接口 Statement接口 ResultSet接口
JDBC API JDBC Driver Manager
JDBC 驱动
访问数据库
本章目标
掌握JDBC的工作原理 掌握如何获取数据库连接 掌握如何对数据进行增、删、改、查
为什么需要JDBC
JDBC是Java数据库连接技术的简称,提供连接各种常用 数据库的能力
Java应用程序 JDBC
客户端
JSP/Servlet JDBC 客户端
数据库服务器
应用服务器
数据库服务器
JDBC程序的工作原理
相关文档
最新文档