此例子采用JDBC2.
0
,和ORACLE9i数据库。数据库位于本机上。采用数据库自带的SCOTT模式。
内附有详细的注释,我想我应该不用多讲了吧
import
java.sql.
*
;
import
oracle.sql.
*
;
import
oracle.jdbc.pool.OracleDataSource;
public
class
JdbcOracle
{
public
static
void
main(String[] args)
{
/** */
/**
URL格式:drivername:@driver_information
1,drivername主要有以下两种
jdbc:oracle:thin (thin驱动程序)
jdbc:oracle:oci (oci驱动程序)
2,driver_information
host_nameort:database_sid
*/
Connection conn
=
null
;
Statement stmt
=
null
;
ResultSet rs
=
null
;
String url
=
"
jdbc:oracle:thin:@localhost:1521:ORADB
"
;
String username
=
"
scott
"
;
String password
=
"
tiger
"
;
try
{
/** */
/**
一、注册驱动程序
方法一Class.forName("oracle.jdbc.OracleDriver";
*/
DriverManager.registerDriver(
new
oracle.jdbc.OracleDriver());
//
二、打开数据库连接
/** */
/**
方法一,使用oracle数据源对象?
oracle.jdbc.pool.OracleDataSource ds=new oracle.jdbc.pool.OracleDataSource();
ds.setServerName("localhost";
ds.setDatabaseName("ORADB"; //数据库存名
ds.setDriverType("oci"; //要使用的JDBC驱动程序(OracleDatasore的扩展)
ds.setURL("jdbc:oracle:thin:@localhost:1521:ORADB"; //指定数据库的URL(OracleDataSource的扩展)
ds.setDataSourceName(""; //底层数据源的名称
ds.setNetworkProtocol("tcp";//用于数据库通信的协议
ds.setPortNumber(1521);//端口号
ds.setUser("scott";
ds.setPassword("tiger";
Connection conn=ds.getConnection();
*/
//
方法二、使用Drivermanger
conn
=
DriverManager.getConnection(url, username, password);
//
设置事务提交模式
//
conn.setAutoCommit(true);
//
若禁止了自动提交模式,那么在关闭Connection对象时会执行一次自动隐式提交,以保证还没有提交的所有DML语句被自动提交
conn.setAutoCommit(
false
);
//
三、创建JDBC Statement对象
stmt
=
conn.createStatement();
//
PreparedStatement pstmt=conn.prepareStatement("带有参数的SQL语句";
//
CallableStatement cstmt=conn.prepareCall("调用存储过程的语句";
//
四、从数据库获取行
/** */
/**
select 语句用executeQuery()
insert,update,delete语句用executeUpdate()
若预先不知道要执行的SQL语句类型,那么用execute()
*/
rs
=
stmt.executeQuery(
"
select id,name,age,***,birth from employee
"
;
//
五、从数据库获取行
while
(rs.next())
{
int
id
=
rs.getInt(
"
id
"
;
String name
=
rs.getString(
"
name
"
;
int
age
=
rs.getInt(
"
age
"
;
String
***
=
rs.getString(
"
***
"
;
Date birth
=
rs.getDate(
"
birth
"
;
}
//
rs.close();
//
六、向数据库中添加行(注:月份的编码是从0开始的,因此月份1代表2月)
java.sql.Date date
=
new
java.sql.Date(
82
,
10
,
05
);
int
i
=
stmt.executeUpdate(
"
insert into employee values
"
+
"
(1,'qds',22,'1',TO_DATE(date,'YYYY,MM,DD'))
"
;
//
七、修改数据中的行
int
j
=
stmt.executeUpdate(
"
update employee set age=21 where id=1
"
;
//
八、从数据库中删除行
int
k
=
stmt.executeUpdate(
"
delete from employee set id=1
"
;
//
九、处理数据库的NULL值方法一:使用结果集对象的wasNull方法判断
conn.commit();
rs
=
stmt.executeQuery(
"
select id,type_id,prod_name from product where id=1
"
;
//
此次假设type_id列为Null值
System.out.println(
"
id=
"
+
rs.getInt(
"
id
"
);
System.out.println(
"
type_id=
"
+
rs.getInt(
"
type_id
"
);
if
(rs.wasNull())
{
System.out.println(
"
type_id was null!
"
;
}
System.out.println(
"
prod_name=
"
+
rs.getString(
"
prod_name
"
);
//
九、处理数据库的NULL值方法二:使用JAVA包装器类.因为JAVA包装器类可以赋于NULL值
//
java.lang.Integer typeId=(java.lang.Integer)rs.getObject("type_id";
//
System.out.println(typeId);此时typeId的值为Null
//
在向数据库插入或更新某一行为NULL值时,也可以使用JAVA包装器对象
//
java.lang.Double price=null;
//
int ii=stmt.executeUpdate("update products set price="+price+" where id=12";
rs.close();
//
十,执行数据定义语言语句(DDL:CREATE,ALTER,DROP)----采用execute()方法执行DDL语句
//
执行DDL语句会导致一次隐式提交,因此,如果你在发出DDL语句之前执行了一些未提交的DML语句,那么这些DML语句将被提交
boolean
result
=
stmt.execute(
"
create table customers(
"
+
"
id integer constraint customers_pK primary key,
"
+
"
first_name varchar2(10) not null,
"
+
"
last_name varchar2(10) not null,
"
+
"
dob date,
"
+
"
phone varchar2(15)
"
+
""
;
if
(result
==
true
)
{
System.out.println(
"
The table has Created!
"
;
}
else
{
System.out.println(
"
The table hasn't Create
"
;
}
//
-------------------------------------------------------------------------
}
catch
(Exception e)
{
System.out.println(
"
error:
"
+
e);
try
{
conn.rollback();
}
catch
(SQLException sqle)
{}
}
finally
{
try
{
if
(rs
!=
null
)
rs.close();
}
catch
(SQLException sqle)
{
System.out.println(
"
SQLState:
"
+
sqle.getSQLState());
System.out.println(
"
SQLErrorCode: 错误代码
"
+
sqle.getErrorCode());
System.out.println(
"
SQLErrorMessage:错误情况的字符串
"
+
sqle.toString());
}
try
{
if
(stmt
!=
null
)
stmt.close();
}
catch
(SQLException sqle1)
{
System.out.println(
"
SQLState:
"
+
sqle1.getSQLState());
System.out.println(
"
SQLErrorCode: 错误代码
"
+
sqle1.getErrorCode());
System.out.println(
"
SQLErrorMessage:错误情况的字符串
"
+
sqle1.toString());
}
try
{
if
(conn
!=
null
)
conn.close();
}
catch
(SQLException sqle2)
{
System.out.println(sqle2.toString());
System.out.println(sqle2.getSQLState());
System.out.println(sqle2.getErrorCode());
}
}
}
}
posted on 2006-05-11 12:33
romance 阅读(1552)
评论(0) 编辑 收藏