最近开始学习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. php实现批量修改文件名称

    场景叙述:比如我要将D:\WWW\img\Gastroenterology这个文件夹下图片要重新命名成1.jpg,2.jpg.......这样的有规律名字, 如下图: 那么我们就可以利用php的ren ...

  2. .net开源权限管理系统

    有业务请加QQ 245747009 源码地址:http://git.oschina.net/sunzewei/EIP 一.更新记录1.更新日期:2017-02-24 00:00:002.更新内容: 版 ...

  3. Xmpp学习之Smack发送消息JID变乱码

    Xmpp学习之Smack发送消息JID变乱码 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6947723 ...

  4. 在Quo.js下Tap和singleTap的区别

    前两天上网搜开发手机页面的JS,看到了Quo.js下载下来后来看了一下,支持的触屏手势挺多的,在一般的开发中应该够用了,更让我喜欢它的一点是它跟JQ差不多(虽然功能不如JQ强大但是语法基本一致).这就 ...

  5. lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3

    前言:上一章中我们已经实现了索引器的创建,但是我们没有索引文档,本章将会讲解如何生成字段.创建索引文档,给字段加权以及保存文档到索引器目录 luncene5.5.3集合jar包下载地址:http:// ...

  6. 什么是Web Worker?

    简单点说,Web Worker就是一个运行在后台的JavaScript线程,不会影响页面的响应. 我们知道,JavaScript是单线程的脚本语言,即同一时刻只能做一件事情,否则会带来极其复杂的同步问 ...

  7. 在Caffe添加Python layer详细步骤

    本文主要讨论的是在caffe中添加python layer的一般流程,自己设计的test_python_layer.py层只是起到演示作用,没有实际的功能. 1) Python layer 在caff ...

  8. c# networkcomms 3.0实现模拟登陆总结

    最近项目需要做一个客户查询状态系统,当前上位机缺少服务功能,于是找到了networkcomms 开源框架,作为项目使用. 最新版networkcomms 下载地址:https://github.com ...

  9. java入门学习笔记之1(类的定义,代码的编译执行)

    这篇文章讲解Java代码的基本执行过程 我们先抛开各种JAVA IDE,开发工具,只使用文本编辑器,以突出最本质的东西. 在Linux环境下,我们编辑一个文件: vim HelloWorld.java ...

  10. Hibernate入门(一)

    一 Hibernate介绍 Hibernate 是一个开源.轻量级的ORM(对象关系映射)工具,该工具简化了数据创建.数据处理和数据访问,它是一种将对象映射到数据库中表的编程技术.ORM工具内部使用J ...