最近开始学习java,感觉java的数据库编程需要发个随笔记录一下,话不多说 切入正题。

一.数据库访问技术的简介

 应用程序  →  执行SQL语句 →数据库 → 检索数据结果 → 应用程序               

              ( ODBC         JDBC(两个常用的API))

               java主要使用的 JDBC驱动程序进行数据库的编程

               Java 应用程序 <------> JDBC   <------>  数据库

二.JDBC 的体系结构

            应用层

              ↓

             驱动层

             ↓

            各个接口

    •Driver •Connection •Statement •ResultSet

三.java.sql.包

接口名

说明

Connection

此接口表示与数据的连接

PreparedStatement

此接口用于执行预编译的 SQL 语句

ResultSet

此接口表示了查询出来的数据库数据结果集

Statement

此接口用于执行 SQL 语句并将数据检索到 ResultSet 中

类名

说明

DriverManager

此类用于加载和卸载各种驱动程序并建立与数据库的连接

Date

此类包含将 SQL 日期格式转换成 Java 日期格式的各种方法

Time

此类用于表示时间

TimeStamp

此类通过添加纳秒字段为时间提供更高的精确度

四.JDBC 编程要点

在Java中使用数据库进行JDBC编程时,Java程序中通常应包含下述几部分内容:

(1) 在程序的首部用import语句将java.sql包引入程序:

import java.sql.*;

(2) 使用Class.forName( )方法加载相应数据库的JDBC驱动程序。若以加载jdbc-odbc桥为例,则相应的语句格式为:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

(3) 定义JDBC的URL对象。例如: String conURL="jdbc:odbc:TestDB";

其中TestDB是我们设置的要创建的数据源。

(4) 连接数据库。

Connection s=DriverManager.getConnection(conURL);

(5) 使用SQL语句对数据库进行操作。

(6) 使用close( )方法解除Java与数据库的连接并关闭数据库。

例如: s.close( );

五.数据库连接 步骤—1

创建一个以JDBC连接数据库的程序,包含7个步骤:   
  1、加载JDBC驱动程序:   
    在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String  className)实现。例如:   
    try{   
        //加载MySql的驱动类   
        Class.forName("com.mysql.jdbc.Driver")

        //加载oracle驱动 
        Class.forName("oracle.jdbc.driver.OracleDriver");  
        //加载sqlserver驱动 
        Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
    }catch(ClassNotFoundException e){   
        System.out.println("找不到驱动程序类 ,加载驱动失败!");   
        e.printStackTrace()
;   
    }

成功加载后,会将Driver类的实例注册到DriverManager类中。

步骤—2

提供JDBC连接的URL   
      •连接URL定义了连接数据库时的协议、子协议、数据源标识。   
      •书写形式:协议:子协议:数据源标识   
       协议:在JDBC中总是以jdbc开始   
       子协议:是桥连接的驱动程序或是数据库管理系统名称。   
      数据源标识:标记找到数据库来源的地址与连接端口。   
      例如:(MySql的连接URL)   
      jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk
;   //
      useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为   
      gb2312或GBK,本参数必须设置为true.characterEncoding=gbk:字符编码方式。 
      也可表示为: 
      String url= "jdbc:mysql://localhost:3306/test"; 
//mysql 
      String
url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID 
      String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
//连接sqlserver的url

步骤—3

创建数据库的连接   
.     •要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接
       •使用DriverManager的getConnectin(String url , String username,String
password)方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。   
      例如:   
      //连接MySql数据库,用户名和密码都是root   
       String url =
"jdbc:mysql://localhost:3306/test" ;    
       String username = "root"
;   
       String password = "root"
;   
       try{   
           Connection
con=DriverManager.getConnection(url,username,password);   
       }catch(SQLException se){   
          
System.out.println("数据库连接失败!");   
          
se.printStackTrace() ;   
       }

步骤—4

创建一个Statement   
       •要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3种类型:   
        1、执行静态SQL语句。通常通过Statement实例实现。   
        2、执行动态SQL语句。通常通过PreparedStatement实例实现。   
        3、执行数据库存储过程。通常通过CallableStatement实例实现。   
      具体的实现方式:   
         Statement stmt = con.createStatement()
;   
         PreparedStatement pstmt =
con.prepareStatement(sql) ;   
         CallableStatement cstmt =
con.prepareCall("{CALL demoSp(? , ?)}") ;

步骤—5

执行SQL语句   
      Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate   
      和execute   
      1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象。   
      2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等   (返回影响到的数据记录数)
      3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合语句。   
      具体实现的代码:   
       ResultSet rs =
stmt.executeQuery("SELECT * FROM ...") ;   
       int rows = stmt.executeUpdate("INSERT
INTO ...") ;   
       boolean flag = stmt.execute(String sql)
;

步骤—6

处理结果   
      两种情况:   
        1、执行更新返回的是本次操作影响到的记录数。   
        2、执行查询返回的结果是一个ResultSet对象。   
       • ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。   
      • 使用结果集(ResultSet)对象的访问方法获取数据:   
       while(rs.next()){   
            String name
= rs.getString("name") ;   
            String pass
= rs.getString(1) ; // 此方法比较高效(列是从左到右编号的,并且从列1开始)   
       }

步骤—7

关闭JDBC对象    
      操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声   明顺序相反:   
        1、关闭记录集   
        2、关闭声明   
        3、关闭连接对象

                                                                4/7/2015 9:20:44 PM H.yf记录

参考文献 《Java编程实战宝典》 清华大学出版社 刘新,管磊等编著

java 数据库编程 学习笔记 不断更新的更多相关文章

  1. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  2. Java并发编程学习笔记

    Java编程思想,并发编程学习笔记. 一.基本的线程机制 1.定义任务:Runnable接口 线程可以驱动任务,因此需要一种描述任务的方式,这可以由Runnable接口来提供.要想定义任务,只需实现R ...

  3. Java多线程编程(学习笔记)

    一.说明 周末抽空重新学习了下多线程,为了方便以后查阅,写下学习笔记. 有效利用多线程的关键是理解程序是并发执行而不是串行执行的.例如:程序中有两个子系统需要并发执行,这时候需要利用多线程编程. 通过 ...

  4. Java网络编程学习笔记

    Java网络编程,我们先来看下面这一张图: 由图可得:想要进行网络编程,首先是服务器端通过ServerSocket对某一个端口进行监听.通过accept来判断是否有客户端与其相连.若成功连上,则通过r ...

  5. Java并发编程学习笔记(一)——线程安全性

    主要概念:线程安全性.原子性.原子变量.原子操作.竟态条件.复合操作.加锁机制.重入.活跃性与性能. 1.当多个线程访问某个状态变量并且其中有一个线程执行写入操作时,必须采用同步机制来协同这些线程对变 ...

  6. JAVA Socket 编程学习笔记(二)

    在上一篇中,使用了 java Socket+Tcp/IP  协议来实现应用程序或客户端--服务器间的实时双向通信,本篇中,将使用 UDP 协议来实现 Socket 的通信. 1. 关于UDP UDP协 ...

  7. JAVA Socket 编程学习笔记(一)

    1. Socket 通信简介及模型 Java Socket 可实现客户端--服务器间的双向实时通信.java.net包中定义的两个类socket和ServerSocket,分别用来实现双向连接的cli ...

  8. JAVA并发编程学习笔记------对象的可见性及发布逸出

    一.非原子的64位操作: 当线程在没有同步的情况下读取变量时,可能会得到一个失效值,但至少这个值是由之前某个线程设置的值,而不是一个随机值,这种安全性保证被称为最低安全性.最低安全性适用于绝大多数变量 ...

  9. [转]JAVA并发编程学习笔记之Unsafe类

    1.通过Unsafe类可以分配内存,可以释放内存:类中提供的3个本地方法allocateMemory.reallocateMemory.freeMemory分别用于分配内存,扩充内存和释放内存,与C语 ...

随机推荐

  1. 开涛spring3(6.2) - AOP 之 6.2 AOP的HelloWorld

    6.2.1  准备环境 首先准备开发需要的jar包   org.springframework.aop-3.0.5.RELEASE.jar com.springsource.org.aspectj.w ...

  2. 小tips:用java模拟小球做抛物线运动

    这几天刚刚学习了java线程,然后跟着书做了几个关于线程的练习,其中有一个练习题是小球动起来.这个相信很简单,只要运用线程就轻松能够实现.然后看到了它的一个课后思考题,怎样让小球做个抛物线运动,这点我 ...

  3. css重构之旅

    css重构之旅 >前言: 今年我大一,马上就要大二了.从高三毕业暑假到大学的这一年马上过去,马上迎来大二生活学习前端也有将近一年了.一昧去追求那些视觉的效果和相对高端和新颖的技术,反而忽略了最基 ...

  4. Redis中的数据结构与常用命令

    开发系统:Ubuntu 17.04Redis驱动:StackExchange.Redis 1.2.3Redis版本:3.2.1开发平台:.NET Core 对于Redis的介绍这里只写一句:Redis ...

  5. 小K的H5之旅-HTML5与CSS3部分新属性浅见

    一.HTML部分 1.HTML5新特点 向下兼容.用户至上.化繁为简.无插件范式.访问通用性.引入语义.引入原生媒体支持.引入可编程内容 2.HTML5标签语法 可以省略的元素:空元素语法的元素{br ...

  6. 页面中的平滑滚动——smooth-scroll.js的使用

    正常的本页面锚链接跳转的时候跟PPT似的,特别生硬,用户体验非常差. 这时候我们就可以借助smooth-scroll.js这个插件,来实现本页面的平滑的跳转. 1首先,导入必须的JS文件 <sc ...

  7. 一天搞定CSS:边框border--02

    每一个标签都是一个盒子,具体见HTML教程 因此,每一个标签有大小,有边框 1.border样式:单一样式 2.border样式:复合样式 border: 粗细 类型 颜色: 3.border方向 4 ...

  8. 免费在线生成彩色带logo的个性二维码

          码工具网站提供免费的在线二维码生成服务,可以把网址.文本.电子邮件.短信.电话号码.电子名片.wifi网络等信息生成对应的二维码图片.你可以设置二维码图片的格式(png,jpg,gif). ...

  9. oracle查询第一篇

    第一个小知识点: clear 在oracle中也可以用以清除屏幕上的内容 第二个小知识点: 在一个表中插入自身的查询结果 insert into my_table (id,name,age) sele ...

  10. (转)导出EXCEL时科学计数法问题

    //1)  文本:vnd.ms-excel.numberformat:@ //2)  日期:vnd.ms-excel.numberformat:yyyy/mm/dd //3)  数字:vnd.ms-e ...