配置里加上
dialect=org.hibernate.dialect.Oracle10gDialect
楼上的注意,
连sqlserver怎么把方言设置成oralce的?
应该是:
dialect=org.hibernate.dialect.SQLServerDialect
// $id: basicjdbcoperatetest.java,v 1.1 2006/07/28 01:13:57 aaron exp $
package cn.net.isomtri.test.jdbc;
import java.math.bigdecimal;
import java.sql.connection;
import java.sql.drivermanager;
import java.sql.preparedstatement;
import java.sql.resultset;
import java.sql.sqlexception;
import java.sql.statement;
import java.sql.timestamp;
import java.text.simpledateformat;
import junit.framework.testcase;
import org.springframework.jdbc.datasource.drivermanagerdatasource;
import com.eaio.uuid.uuid;
// create table "document"."t_doc001"
// ( "doc_id" char(32) not null enable,
// "lang_type" char(2) not null enable,
// "doc_name" varchar2(200) not null enable,
// "pub_date" date,
// "source" varchar2(200),
// "summary" varchar2(2000),
// "test" number(10,2),
// constraint "pk_t_doc001" primary key ("doc_id")
// using index pctfree 10 initrans 2 maxtrans 255
// storage(initial 65536 next 1048576 minextents 1 maxextents 2147483645
// pctincrease 0 freelists 1 freelist groups 1 buffer_pool default)
// tablespace "users" enable
// ) pctfree 10 pctused 40 initrans 1 maxtrans 255 nocompress logging
// storage(initial 65536 next 1048576 minextents 1 maxextents 2147483645
// pctincrease 0 freelists 1 freelist groups 1 buffer_pool default)
// tablespace "users"
/**
* 基本jdbc调用测试类
*
* @author 刘德欣
* @created 2006/07/27
* @version $revision: 1.1 $, $date: 2006/07/28 01:13:57 $
*/
public class basicjdbcoperatetest
extends
testcase {
/**
* jdbc驱动:driverclassname
* mysql:"com.mysql.jdbc.driver"
* postgresql:"org.postgresql.driver"
* oracle:"oracle.jdbc.driver.oracledriver"
* sybase:"com.sybase.jdbc2.jdbc.sybdriver"
* sqlserver:"com.microsoft.jdbc.sqlserver.sqlserverdriver"
* db2:"com.ibm.db2.jdbc.net.db2driver"
*/
private static final string driver_class_name = "oracle.jdbc.driver.oracledriver";
/**
* 数据库连接字:url
* mysql:"jdbc:mysql://dbcomputernameorip:3306/dbname"
* postgresql:"jdbc:postgresql://dbcomputernameorip:3306/dbname"
* oracle:"jdbc:oracle:thin:@dbcomputernameorip:1521:dbname"
* sybase:"jdbc:sybase:dbname:dbcomputernameorip:2638"
* sqlserver:"jdbc:microsoft:sqlserver://dbcomputernameorip:1433;databasename=dbname"
*
* db2:"jdbc:db2://dbcomputernameorip/dbname"
*/
private static final string url = "jdbc:oracle:thin:@172.16.50.11:1521:isomtri";
/**
* 数据库访问所需要的用户名:username
*/
private static final string username = "document";
/**
* 数据库访问所需要的密码:password
*/
private static final string password = "institute";
/**
* jdbc基本概念
*/
public void testbasicjdbcoperate1() {
try {
// 加载jdbc驱动
class.forname(driver_class_name);
// 建立数据库连接
connection conn = drivermanager.getconnection(url, username,
password);
// 关闭数据库连接
conn.close();
asserttrue(true);
} catch (sqlexception e) {
e.printstacktrace();
fail();
} catch (classnotfoundexception e) {
fail();
}
}
/**
* 使用统一的方法连接数据库
*
* @return 数据库连接器
*/
protected connection getconnection() {
connection conn = null;
try {
drivermanagerdatasource datasource = new drivermanagerdatasource();
datasource.setdriverclassname(driver_class_name);
datasource.seturl(url);
datasource.setusername(username);
datasource.setpassword(password);
// 加载jdbc驱动
// class.forname(driver_class_name);
// 建立数据库连接
// conn = drivermanager.getconnection(url, username, password);
conn = datasource.getconnection();
asserttrue(true);
} catch (sqlexception e) {
e.printstacktrace();
fail();
}
return conn;
}
/**
* 最基本的crud操作
*/
public void testbasicjdbcoperate2() {
// step 1
string id = create();
// step 3
find(id);
// 考核
update(id);
// step 2
delete();
}
/**
* create操作
*
* @return 新记录的doc_id
*/
protected string create() {
string id = null;
try {
// 取得数据库连接器
connection conn = getconnection();
// stringbuffer的调用方法
stringbuffer sql = new stringbuffer();
sql
.append("insert into t_doc001 ")
.append(
"(doc_id, lang_type, doc_name, pub_date, source, summary, test)")
.append("values(?, ?, ?, ?, ?, ?, ?)");
// 预编译声明(连接器有两种调用sql的方法:简单声明与预编译声明)
preparedstatement state = conn.preparestatement(sql.tostring());
// 参数索引必须从1开始
try {
state.setstring(0, "a");
fail();
} catch (sqlexception e) {
asserttrue(true);
}
// 设置第一个参数(uuid的用法)
id = new uuid().tostring().replaceall("-", "");
state.setstring(1, id);
state.setstring(2, "zh");
state.setstring(3, "test");
// timestamp的用法
// 年从1900算起
// 月的范围 0 - 11
state.settimestamp(4, new timestamp(2006 - 1900, 7 - 1, 20, 8, 30,
0, 0));
state.setstring(5, "source");
state.setstring(6, "summary");
// 设置第七个参数(bigdecimal的用法)
// state.setbyte(7, (byte)10);
// state.setshort(7, (short) 10);
// state.setint(7, 10);
// state.setlong(7, 10l);
// 插入float与double时,sql具有四舍五入功能
// state.setfloat(7, 10.12545678f);
// state.setdouble(7, 10.12545678);
state.setbigdecimal(7, new bigdecimal("10.125"));
// 更新操作(jdbc提供两种操作:查询操作与更新操作)
// executeupdate返回操作影响到的记录数
assertequals(1, state.executeupdate());
// 关闭数据库连接
conn.close();
asserttrue(true);
} catch (sqlexception e) {
e.printstacktrace();
fail();
}
return id;
}
/**
* 简单的read操作
*
* @param id
* 需要校验的doc_id
*/
protected void find(
string id) {
try {
// 取得数据库连接器
connection conn = getconnection();
string sql = "select doc_id, lang_type, doc_name, "
+ "pub_date, source, summary, test from t_doc001";
// 简单声明(连接器有两种调用sql的方法:简单声明与预编译声明)
statement state = conn.createstatement();
// 查询操作(jdbc提供两种操作:查询操作与更新操作)
resultset rs = state.executequery(sql);
// 获取结果集中列数的方法
assertequals(7, rs.getmetadata().getcolumncount());
// 列索引必须从1开始
try {
rs.getmetadata().getcolumnname(0);
fail();
} catch (sqlexception e) {
asserttrue(true);
}
// 列索引不得超出范围
try {
rs.getmetadata().getcolumnname(8);
fail();
} catch (sqlexception e) {
asserttrue(true);
}
// 第一列的信息
assertequals("doc_id", rs.getmetadata().getcolumnlabel(1));
assertequals("doc_id", rs.getmetadata().getcolumnname(1));
assertequals("java.lang.string", rs.getmetadata()
.getcolumnclassname(1));
assertequals(32, rs.getmetadata().getcolumndisplaysize(1));
// sql的标准? 1 <--> char
assertequals(1, rs.getmetadata().getcolumntype(1));
assertequals("char", rs.getmetadata().getcolumntypename(1));
// 第二列的信息
assertequals("lang_type", rs.getmetadata().getcolumnlabel(2));
assertequals("lang_type", rs.getmetadata().getcolumnname(2));
assertequals("java.lang.string", rs.getmetadata()
.getcolumnclassname(2));
assertequals(2, rs.getmetadata().getcolumndisplaysize(2));
assertequals("char", rs.getmetadata().getcolumntypename(2));
// 第三列的信息
assertequals("doc_name", rs.getmetadata().getcolumnlabel(3));
assertequals("doc_name", rs.getmetadata().getcolumnname(3));
assertequals("java.lang.string", rs.getmetadata()
.getcolumnclassname(3));
assertequals(200, rs.getmetadata().getcolumndisplaysize(3));
assertequals("varchar2", rs.getmetadata().getcolumntypename(3));
// 第四列的信息
assertequals("pub_date", rs.getmetadata().getcolumnlabel(4));
assertequals("pub_date", rs.getmetadata().getcolumnname(4));
assertequals("java.sql.timestamp", rs.getmetadata()
.getcolumnclassname(4));
assertequals(7, rs.getmetadata().getcolumndisplaysize(4));
assertequals("date", rs.getmetadata().getcolumntypename(4));
// 第七列的信息
assertequals("test", rs.getmetadata().getcolumnlabel(7));
assertequals("test", rs.getmetadata().getcolumnname(7));
assertequals("java.math.bigdecimal", rs.getmetadata()
.getcolumnclassname(7));
assertequals(22, rs.getmetadata().getcolumndisplaysize(7));
assertequals("number", rs.getmetadata().getcolumntypename(7));
// resultset中没有直接获取行数的方法
asserttrue(rs.next());
// 无效列的读取
try {
rs.getstring(0);
fail();
} catch (sqlexception e) {
asserttrue(true);
}
// 第一列数据的读取(按列数读取)
assertequals(id, rs.getstring(1));
// 第二列数据的读取(按列数读取)
assertequals("zh", rs.getstring(2));
// 第三列数据的读取(按列名读取)
assertequals("test", rs.getstring("doc_name"));
// 第四列数据的读取
assertequals("2006/07/20 00:00:00", new simpledateformat(
"yyyy/mm/dd hh:mm:ss").format(rs.getdate("pub_date")));
assertequals("1970/01/01 08:30:00", new simpledateformat(
"yyyy/mm/dd hh:mm:ss").format(rs.gettime("pub_date")));
assertequals("2006/07/20 08:30:00", new simpledateformat(
"yyyy/mm/dd hh:mm:ss").format(rs.gettimestamp("pub_date")));
// 第七列数据的读取(简单类型)
assertequals((byte) 10, rs.getbyte("test"));
assertequals((short) 10, rs.getshort("test"));
assertequals(10, rs.getint("test"));
assertequals(10l, rs.getlong("test"));
assertequals(10.13f, rs.getfloat("test"), 0.01f);
assertequals(10.13, rs.getdouble("test"), 0.01);
// 第七列数据的读取(bigdecimal)
assertequals((byte) 10, rs.getbigdecimal("test").bytevalue());
assertequals((short) 10, rs.getbigdecimal("test").shortvalue());
assertequals(10, rs.getbigdecimal("test").intvalue());
assertequals(10l, rs.getbigdecimal("test").longvalue());
assertequals(10.13f, rs.getbigdecimal("test").floatvalue(), 0.01f);
assertequals(10.13, rs.getbigdecimal("test").doublevalue(), 0.01);
// 数据库中只有一行
assertfalse(rs.next());
// 关闭数据库连接
conn.close();
asserttrue(true);
} catch (sqlexception e) {
fail();
}
}
/**
* update操作
*
* @param id
* 需要更新的记录的doc_id
*/
protected void update(
string id) {
// 请将指定id的记录做以下修改:
// lang_type 修改为 "ja";
// pub_date 修改为 "2006/08/01 00:00:00"(利用date类);
// test 修改为 "432.65"(利用float类型);
}
/**
* delete操作
*/
protected void delete() {
try {
// 取得数据库连接器
connection conn = getconnection();
string sql = "delete from t_doc001";
// 简单声明(连接器有两种调用sql的方法:简单声明与预编译声明)
statement state = conn.createstatement();
// 更新操作(jdbc提供两种操作:查询操作与更新操作)
// executeupdate返回操作影响到的记录数
assertequals(1, state.executeupdate(sql));
// 关闭数据库连接
conn.close();
asserttrue(true);
} catch (sqlexception e) {
fail();
}
}
}-->
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....