Java数据库编程中的常用技巧

1、java数据库操作基本流程

2、几个常用的重要技巧:

可滚动、更新的记录集

批量更新

事务处理

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

1、取得数据库连接

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中

2、执行sql语句

1)用Statement来执行sql语句

String sql;

Statement sm = cn.createStatement();

sm.executeQuery(sql); // 执行数据查询语句(select)

sm.executeUpdate(sql); // 执行数据更新语句(delete、update、inssert、drop等)statement.close();

2)用PreparedStatement来执行sql语句

String sql;

sql = "inssert 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(); // 更新

3、处理执行结果

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

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

ResultSet的方法:

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

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

3、释放连接。

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);

批量更新

1、Statement

Statement sm = cn.createStatement();

sm.addBatch(sql1);

sm.addBatch(sql2);

...

sm.executeBatch()

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

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(inssert into user...);

sm.executeUpdate();

sm.close();

sm = cn.createStatement("inssert into corp...);

sm.executeUpdate();

sm.close();

3、提交

cn.commit();

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

cn.rollback();

时间: 2024-10-10 00:05:43

Java数据库编程中的常用技巧的相关文章

[转]数据库设计中的常用技巧

本文介绍了数据库设计中的14个技巧,这是许多人在大量的数据库分析与设计实践中,逐步总结出来的-- 下述十四个技巧,是许多人在大量的数据库分析与设计实践中,逐步总结出来的.对于这些经验的运用,读者不能生帮硬套,死记硬背,而要消化理解,实事求是,灵活掌握.并逐步做到:在应用中发展,在发展中应用. 1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个

JAVA 数据库编程中的性能优化

1. 禁止自动提交:在默认情况下,程序执行的任何sql 语句都是自动提交的向一个表中插入2000条记录,自动提交所用的时间  11666毫秒禁止自动提交(显示提交) 3450毫秒 2. 批处理:多用批处理,减少操作数据库次数.(1).禁止自动提交setAutoCommit(false);(2).准备一个语句对象PreparedStatement myPrepStatement = myConnection.prepareStatement(“insert into test_tab(value)

Java多线程编程中Future模式的详解<转>

Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Future模式,关于其他多线程设计模式的地址如下:关于其他多线程设计模式的地址如下:关于Master-Worker模式的详解: Java多线程编程中Master-Worker模式的详解关于Guarded Suspeionsion模式的详解: Java多线程编程中Guarded Suspeionsion模式

java并发编程中常用的工具类 Executor

/***************************************************  * TODO: description .  * @author: gao_chun  * @since:  2015-4-17  * @version: 1.0.0  * @remark: 转载请注明出处  **************************************************/ java.util.concurrent.Executor 使用 Execut

JAVA数据库编程(JDBC技术)-入门笔记

本菜鸟才介入Java,我现在不急着去看那些基本的语法或者一些Java里面的版本的特征或者是一些晋级的知识,因为有一点.Net的OOP编程思想,所以对于Java的这些语法以及什么的在用到的时候在去发现学习一下.我现在很迫不及待用JAVA想来实现以下对数据库的增删改查.想实现就来看Java是怎么操作数据库的,回想下.Net里你可能会配置web.Config,或者你去写一些DBhelper类然后调用里面的自己定义的一些增删改查的方法,更或者你去配一些数据控件等等往往发现操作基本都是一体化的简单.现在面

Java数据库编程、Java与XML解析技术

Java数据库编程: 1. JDBC概述:JDBC(数据库连接)是Java中提供的一套数据库编程API,它定义了一套用来访问数据库的标准Java类库(位于java.sql和javax.sql包中).用JDBC开发的数据库  应用既可以跨操作系统平台,又可以跨数据库系统平台.    在JDBC的基本操作中,最常用的类和接口包括DriverManager,  Connection,  Statement,  PreparedStatement,  CallableStatement 和 Result

JDBC与JAVA数据库编程

一.JDBC的概念 1. JDBC (Java DataBase Connectivity) Java数据库连接 a) 主要提供java数据库应用程序的API支持 2. JDBC的主要功能 a) 创建和管理与数据源的连接 b) 发送SQL数据命令到数据源 c) 提取并处理由数据源返回的结果集 3. JDBC可分为两层 a) 驱动程序管理接口 b) JDBC API 4. Java.sql包中定义的常用基本的JDBC API a) 类DriverManager:管理一组JDBC驱动程序的基本服务

java并发编程中CountDownLatch和CyclicBarrier的使用

转自:http://blog.csdn.net/hbzyaxiu520/article/details/6183714 在多线程程序设计中,经常会遇到一个线程等待一个或多个线程的场景,遇到这样的场景应该如何解决? 如果是一个线程等待一个线程,则可以通过await()和notify()来实现: 如果是一个线程等待多个线程,则就可以使用CountDownLatch和CyclicBarrier来实现比较好的控制. 下面来详细描述下CountDownLatch的应用场景: 例如:百米赛跑:8名运动员同时

用java网络编程中的TCP方式上传文本文件及出现的小问题

自己今天刚学java网络编程中的TCP传输,要用TCP传输文件时,自己也是遇到了一些问题,抽空把它整理了一下,供自己以后参考使用. 首先在这个程序中,我用一个客户端,一个服务端,从客户端上传一个文本文件给服务端,服务端接收数据并显示“上传成功”给客户端. 客户端: 1 import java.io.BufferedReader; 2 import java.io.FileReader; 3 import java.io.IOException; 4 import java.io.InputStr