JAVA数据库基本操作指南

 

Java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接。

一、取得数据库连接

1、用DriverManager取数据库连接

例子:

String     className,url,uid,pwd;
        className = "oracle.jdbc.driver.OracleDriver";
      url =     "jdbc:oracle:thin:@127.0.0.1:1521:orasvr;
      uid = "system";
      pwd = "manager";
      Class.forName(className);
      Connection cn =     DriverManager.getConnection(url,uid,pwd);

2、用jndi(java的命名和目录服务)方式

例子:

  String jndi = "jdbc/db";
      Context ctx = (Context) new     InitialContext().lookup("java:comp/env");
      DataSource ds = (DataSource) ctx.lookup(jndi);
      Connection cn = ds.getConnection();

多用于jsp中。

二、执行sql语句

1、用Statement来执行sql语句

  String sql;
      Statement sm = cn.createStatement();
      sm.executeQuery(sql); // 执行数据查询语句(select)
      sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)

statement.close();

2、用PreparedStatement来执行sql语句

  String sql;
      sql = "insert into user (id,name) values     (?,?)";
      PreparedStatement ps = cn.prepareStatement(sql);
      ps.setInt(1,xxx);
      ps.setString(2,xxx);
      ...
      ResultSet rs = ps.executeQuery(); // 查询
      int c = ps.executeUpdate(); // 更新

三、处理执行结果

查询语句,返回记录集ResultSet。

更新语句,返回数字,表示该更新影响的记录数

ResultSet的方法

(1)next(),将游标往后移动一行,如果成功返回true;否则返回false

(2)getInt("id")或getSting("name"),返回当前游标下某个字段的值

四、释放连接

  cn.close();

一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection。

(一)可滚动、更新的记录集

1、创建可滚动、更新的Statement

  Statement sm =     cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,

ResultSet.CONCUR_READ_ONLY);

该Statement取得的ResultSet就是可滚动的

2、创建PreparedStatement时指定参数

  PreparedStatemet ps =     cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_READ_ONLY);

  ResultSet.absolute(9000);

#p#

(二)批量更新

1、Statement

  Statement sm =     cn.createStatement();
      sm.addBatch(sql1);
      sm.addBatch(sql2);
      ...
      sm.executeBatch()

一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有

2、PreparedStatement

  PreparedStatement ps =     cn.preparedStatement(sql);
      {
      ps.setXXX(1,xxx);
      ...
      ps.addBatch();
      }
      ps.executeBatch();

一个PreparedStatement,可以把一个sql语句,变换参数多次执行,一次更新。

(三)事务的处理

1、关闭Connection的自动提交

  cn.setAutoCommit(false);

2、执行一系列sql语句

要点:执行每一个新的sql语句前,上一次执行sql语句的Statement(或者PreparedStatemet)必须先close

  Statement sm ;
      sm = cn.createStatement(insert into user...);
      sm.executeUpdate();
      sm.close();
      sm = cn.createStatement("insert into     corp...);
      sm.executeUpdate();
      sm.close();

3、提交

  cn.commit();

4、如果发生异常,那么回滚

  cn.rollback();

JAVA数据库基本操作 (转)的更多相关文章

  1. java数据库基本操作(sqlserver 2000为例)

    一.环境搭建 1.下载对应数据库连接驱动包并引入. 2.如果在web中调用必须在tomcat中也放入对应的驱动包. 3.在jre的lib\ext中也加入对应的驱动包. 二.连接数据库 public s ...

  2. Java数据库操作(MySQL与SQLserver)

    在java编程开发中,数据库的开发是重头戏. MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品: SQL Server是由Microsoft开发 ...

  3. JDBC与JAVA数据库编程

    一.JDBC的概念 1. JDBC (Java DataBase Connectivity) Java数据库连接 a) 主要提供java数据库应用程序的API支持 2. JDBC的主要功能 a) 创建 ...

  4. ecmall数据库基本操作

    ecmall数据库基本操作,为了认真研究ecmall二次开发,我们必须熟悉ecamll的数据库结构,ecmall数据库结构研究熟悉之后,才能去认真分析ecamll的程序结构.从而实现ecmall二次开 ...

  5. Oracle 数据库基本操作——实用手册、表操作、事务操作、序列

    目录: 0. 参考链接与参考手册1. oracle 实用(常用操作)指令2. 数据库基本操作语法 a) 表操作 1)创建表 2)更新表 3)删除表 4)查询 b) 事务操作 c) 序列操作 1)创建序 ...

  6. java面向对象下:Java数据库编程

    19.Java数据库编程: JDBC概述:        JDBC(Java Database Connection)是java中提供的一套数据库编程API,它定义了一套用来访问数据库的标准Java类 ...

  7. 学习java窗口基本操作时无聊写的

    学习java窗口基本操作时无聊写的 就当记录 代码如下: package day08; import java.awt.BorderLayout;import java.awt.Color;impor ...

  8. Java数据库设计14个技巧

    Java数据库设计14个技巧   1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对 ...

  9. MinerDB.java 数据库工具类

    MinerDB.java 数据库工具类 package com.iteye.injavawetrust.miner; import java.sql.Connection; import java.s ...

随机推荐

  1. 带你走进rsync的世界

    导读 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录.rsync共有3种使用方 ...

  2. DOM的相关优化

    为什么要进行DOM优化? DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢,而是说操作了这个对象后,会触发一些浏览器行为,比如布局(layout)和绘制(paint). 首先先说一些 ...

  3. windows7 + cocos2d-x 3.2 +vs2012 速度真的很慢

    每次编译要大半天,简直伤不起,这样效率如何上的去???有谁有办法?

  4. Android之NetworkOnMainThreadException异常

    看名字就应该知道,是网络请求在MainThread中产生的异常 先来看一下官网的解释: Class Overview The exception that is thrown when an appl ...

  5. Oracle Redo

    Redo log 重做日志在Oracle数据库中,有一种日志文件叫做重做日志文件,他就是大家俗称的:redolog.在redolog中又分为两种:在线重做日志与归档日志. ONLINE Redo lo ...

  6. Android 趣味应用—— 短信编辑器

    修改短信数据库,从而生成任意手机号发送的短信. AndroidManifest.xml <?xml version="1.0" encoding="utf-8&qu ...

  7. 补上题代码 hdu1520

    #include<iostream> #include<cmath> #include<algorithm> #include<vector> #inc ...

  8. ubuntu 14.04 对exfat的支持

    sudo apt-get install exfat-utils exfat-fuse sudo reboot

  9. py代码模糊工具

    https://github.com/astrand/pyobfuscate 使用方法,调用下图文件即可,方法 python  pyobfuscate.py your_code.py 即可输出在cmd ...

  10. 基于MATLAB的离散小波变换

    申明,本文非笔者原创,原文转载自:  基于Matlab的离散小波变换         http://blog.sina.com.cn/s/blog_725866260100ryh3.html 简介 在 ...