servlet操作oracle数据库 5

现在要做一个登陆的界面,需要在servlet中操作oracle数据库。需要怎么编写。给出大概的思路或者函数即可。麻烦各位。... 现在要做一个登陆的界面,需要在servlet中操作oracle数据库。需要怎么编写。给出大概的思路或者函数即可。麻烦各位。 展开
 我来答
zh_cn
2006-09-14 · TA获得超过8462个赞
知道小有建树答主
回答量:1335
采纳率:50%
帮助的人:1015万
展开全部
关于LZ的问题:servlet操作数据库和在java中一样(servlet就是java程序),java怎么写servlet就怎么写。
关于java中怎么访问Oracle数据库,网上有很多相关的介绍,这里只是大概提一下,更详细的LZ可以自己上网搜索。
Java连主要有2种数据库连接方式:1.直接加载数据库驱动方式;2.连接池方式。直接加载方式简单易懂,但是资源消耗大,对于网络不稳定的情况适应性差;连接池方式节约资源,能在网络不稳定时会自动重新连接,无需应用程序管理,但相对稍为复杂,需要数据库厂商和中间件提供商支持(当然Oracle这种老大级数据库肯定是支持的啦),还要对连接池参数进行调优,否则可能反不及直接加载。
对于直接连接方式又有像 jdbc-odbc桥、直接thin连接、oci方式连接等。下面是网上找到的一个例子:
(因为是以前找的存下来的,所以不清楚作者,这里先表示下歉意)
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,sex,birth from employee";

//五、从数据库获取行

while (rs.next()) {
int id = rs.getInt("id";
String name = rs.getString("name";
int age = rs.getInt("age";
String sex = rs.getString("sex";
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());
}

}

}
}
别的LZ自己搜吧。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式