最近开始学习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. Python正则表达式完全指南(上)

    正则表达式处理文本有如疾风扫秋叶,绝大部分编程语言都内置支持正则表达式,它应用在诸如表单验证.文本提取.替换等场景.爬虫系统更是离不开正则表达式,用好正则表达式往往能收到事半功倍的效果. 介绍正则表达 ...

  2. springcloud(七):配置中心svn示例和refresh

    上一篇springcloud(六):配置中心git示例留了一个小问题,当重新修改配置文件提交后,客户端获取的仍然是修改前的信息,这个问题我们先放下,待会再讲.国内很多公司都使用的svn来做代码的版本控 ...

  3. python3-如何正常使用HTMLTestRunner.py,生成自动化测试报告

    其实HTMLTestRunner.py是基于python2开发的,为了使其支持python3环境,需要对其的部分内容进行修改.下面我们通过编辑器打开HTMLTestRunner.py文件(编辑器可以选 ...

  4. ACL2016信息抽取与知识图谱相关论文掠影

    实体关系推理与知识图谱补全 Unsupervised Person Slot Filling based on Graph Mining 作者:Dian Yu, Heng Ji 机构:Computer ...

  5. Android应用安全学习笔记前言

    Android是基于Linux kernel的一个自由及开放源代码的操作系统,主要用于移动设备.在2011年第一季度超越了塞班系统跃居了全球第一.本系列作为分享的东西吧.比较基础. 文章也不知道会分为 ...

  6. 安装Mysql5.7并修改初始密码

    Centos 安装MySQL可以参考之前写的一篇文章 Centos7.3 安装Mysql5.7并修改初始密码 windows安装mysql5.7有两种方式 1.下载.msi安装文件直接根据界面提示进行 ...

  7. 限制容器对CPU的使用 - 每天5分钟玩转 Docker 容器技术(28)

    上节学习了如何限制容器对内存的使用,本节我们来看CPU. 默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制. Docker 可以通过 -c 或 --cpu-shares 设置容器 ...

  8. react 基础

    一.组件 函数式定义的无状态组件 es5原生方式React.createClass定义的组件 es6形式的extends React.Component定义的组件 React.Component是以E ...

  9. DOM事件类型总结大全

    unload:事件在用户退出页面时发生 window.onload = function(){ return "页面关闭!"; }; onblur:失去焦点发生变化 window. ...

  10. 用 Google 挖掘赚钱思路

    为程序员,如果学了一堆技术却没有用武之地,实在可惜,如何把自己积累的技术利用起来?通俗一点,程序员有哪些赚钱的门路? 比较常见的一种方式是接私活,不过私活的复杂度不一,沟通成本会非常高,另一方面,私活 ...