参考书籍:《J2EE开源编程精要15讲》

JDBC(Java DataBase Connectivity)是Java Web应用程序开发的最主要API之一。当向数据库查询数据时,Java应用程序先调用JDBC API,然后JDBC API把查询语句提交给JDBC驱动器,JDBC驱动器把查询语句转化为特定数据库理解的形式,JDBC驱动器检索SQL查询的结果,并转化为Java应用程序使用的等价JDBC API类和接口。

JDBC驱动器

  JDBC软件包本身不能链接任何数据库,它只是一个API框架,需要数据库驱动程序以及其他软件包提供实施方法。

  JDBC数据库驱动程序分为以下几类:

  • JDBC-ODBC桥接驱动器:把JDBC API翻译成ODBC API,适用MS Access、MS SQL Server等数据库
  • 部分本机API的Java驱动器:有些数据库,如DB2和Informix,包含数据库厂商供应的JDBC驱动器,包含可JDBC API可直接调用的类
  • 纯Java驱动器:通过IP/TCP把Java应用程序或applet链接到数据库

  常见数据库驱动器和数据库URL(本地URL)

数据库名 数据库驱动器 数据库URL(本地)
Oracle9i  oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@localhost:1521:dbName
SQL Server 2000 com.microsoft.jdbc.sqlserver.SQLServerDriver jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ddbName;
MySQL com.mysql.jdbc.Driver jdbc:mysql://localhost/dbName
JDBC-ODBC sun.jdbc.odbc.JdbcOdbcDriver jdbc:odbc:datasourceName

JDBC API的核心组件

  • DriverManager类:用于跟踪可用的JDBC驱动程序并生成数据库连接
  • Connection接口:用于取得数据库信息,生成数据库语句,管理数据库事务
  • ResultSet接口:访问SQL查询返回的数据。next()以此定位每一行数据,用相应的get方法读取数据
  • Statement接口:提供在基层连接上运行的SQL语句,生成结果集。有2个子接口,PreparedStatement和CallableStatement   

    PreparedStatement 提供可以与查询信息一起预编译的一种语句类型

  CallableStatement继承自PreparedStatement ,用来封装数据库中存储过程的执行

用JDBC查询数据库

  • 装载驱动器
  • 连接数据库
  • 查询数据库  

  装载驱动器

    调用Class类的forName()方法装入数据库特定的驱动器,如:装载MySQL的驱动器

      Class.forName("com.mysql.jdbc.Driver");

  连接数据库

    先从DriverManager类生成Connection对象,如

      String url="jdbc:mysql://localhost/mydatabase";

      Connection con=DriverManager.getConnection(url,"Bill","123");

      本地MySQL数据库mydatabase,用户名为Bill,密码为123

  查询数据库

    1) Statement对象:把简单查询语句发送到数据库

      executeQuery()方法执行简单的选择(SELECT)查询,返回ResultSet对象

      executeUpdate()方法执行SQL的INSERT、UPDATE或DELETE语句,返回int值,给出收影响的行数

      如:

        Statement st=con.createStatement();

        ResultSet rs=st.executeQuery("select * from students");

    2) PreparedStatement对象:允许执行参数化的查询

      如:

        String sql="select * from students where stuID=?";

        PreparedStatement ps=con.prepareStatement(sql);

        ps.setString(1,"56789");//设定第一个问号处参数值为56789,类型为String

        ResultSet rs=ps.executeQuery();

    示例:

 import java.sql.*;

 class Jdbc Test{
public static void main(String args[]){
try{
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost/mydatabase";
Connection con=DriverManager.getConnection(url,"Bill","123");
String sql="select * from students where stuID=?";
PreparedStatement ps=con.prepareStatement(sql);
ps.setString(1,"56789");
ResultSet rs=ps.executeQuery();
while(rs.next()){
String name=rs.getString("student_name");
}
rs.close();
con.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}

    

  

Java Web编程的主要组件技术——JDBC的更多相关文章

  1. Java Web编程的主要组件技术——MVC设计模式

    参考书籍:<J2EE开源编程精要15讲> MVC(Model View Controller),Model(模型)表示业务逻辑层,View(视图)代表表述层,Controller(控制)表 ...

  2. Java Web编程的主要组件技术——Struts入门

    参考书籍:<J2EE开源编程精要15讲> Struts是一个开源的Java Web框架,很好地实现了MVC设计模式.通过一个配置文件,把各个层面的应用组件联系起来,使组件在程序层面联系较少 ...

  3. Java Web编程的主要组件技术——Hibernate核心组件

    参考书籍:<J2EE开源编程精要15讲> Hibernate配置文件 1) hibernate.cfg.xml <?xml version='1.0' encoding='UTF-8 ...

  4. Java Web编程的主要组件技术——Struts核心组件

    参考书籍:<J2EE开源编程精要15讲> Struts配置文件struts-config.xml Struts核心文件,可配置各种组件,包括Form Beans.Actions.Actio ...

  5. Java Web编程的主要组件技术——Hibernate入门

    参考书籍:<J2EE开源编程精要15讲> Hibernate是对象/关系映射(ORM,Object/Relational Mapping)的解决方案,就是将Java对象与对象关系映射到关系 ...

  6. Java Web编程的主要组件技术——Servlet

    参考书籍:<J2EE开源编程精要15讲> Servlet是可以处理客户端传来的HTTP请求,并返回响应,由服务器端调用执行,有一定编写规范的Java类. 例如: package test; ...

  7. Java Web编程的主要组件技术——Struts的高级功能

    参考书籍:<J2EE开源编程精要15讲> Struts对国际化的支持 "国际化"(I18N)指一个应用程序在运行时能根据客户端请求所来的国家/地区.语言的不同显示不同的 ...

  8. Java Web编程的主要组件技术——JSP

    参考书籍:<J2EE开源编程精要15讲> JSP(Java Server Page)页面由HTML代码和嵌入其中的Java代码组成. 简单的JSP页面如: <html> < ...

  9. 五分钟学Java:如何才能学好Java Web里这么多的技术

    原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 系列文章介绍 本文是<五分钟学Java>系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年 ...

随机推荐

  1. android编程常见问题-程序在模拟器中不显示

    新手编程常见问题: 问题表现:程序运行成功,但是在模拟器中不显示 解决办法:检查项目版本和模拟器版本是否匹配或兼容,如果不匹配,选择和模拟器版本一致 项目版本:右键-Properties-androi ...

  2. SQL Server表分区【转】

    转自:http://www.cnblogs.com/knowledgesea/p/3696912.html SQL Server表分区   什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在 ...

  3. CSDN——【低调的草原狼】——Ext4.2学习目录整理

    最近在研究ExtJS,发现CSDN中有个博客中一系列文档非常优秀,但是没有对目录进行整理,在此稍作整理,也为以后自己研究打下一个基础: 原文作者:低调的草原狼 目录:     1.ExtJS4.2学习 ...

  4. 【BZOJ】【2208】【JSOI2010】连通数

    题解: 1.Tarjan缩点以后对每个连通分量进行深搜,看能到哪些连通分量,能到达的所有连通分量的size之和记为sum.则第i个连通分量对答案的贡献为size[i]*sum(到其他连通分量)+siz ...

  5. jquery 父页面 子页面 同级页面 调用

    项目中用到  代码 ,先 展示 ,以便以后用到,直接看下就会明白. var li_divs = parent.$("#servicelist")[0].contentWindow. ...

  6. PHP 性能分析与实验(二)——PHP 性能的微观分析

    [编者按]此前,阅读过了很多关于 PHP 性能分析的文章,不过写的都是一条一条的规则,而且,这些规则并没有上下文,也没有明确的实验来体现出这些规则的优势,同时讨论的也侧重于一些语法要点.本文就改变 P ...

  7. POJ2965The Pilots Brothers' refrigerator

    http://poj.org/problem?id=2965 这个题的话,一开始也不会做,旁边的人说用BFS,后来去网上看了众大神的思路,瞬间觉得用BFS挺简单易:因为要让一个“+”变为“-”,只要将 ...

  8. CHM类型API文件打不开问题解决方法

    这是CHM文档被锁定导致的问题,选择CHM文件,右键属性,解除锁定

  9. N! HDU 1042

    N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  10. 套题T6

    过节(festival.cpp/c/pas) Dxy帮老师们过教师节的时候需要购买礼物.货架上有n 种礼物,每种礼物有不同的个数.每种礼物有价值和花费两种属性,帮他算出最大可以得到的价值.M是带的钱数 ...