我的连接BEAN啊!可是如果执行数据多的话就会出问题!不知道该怎么样改啊!

xvivian 2003-08-21 07:37:28
只能在我这个基础上改啊!因为我已经写了很多JSP调用这个BEAN所以不能大幅度修改阿
我不知道在哪里关闭一些不必要的东西啊

package work;
import java.sql.*;
/*


*/


//Êý¾Ý¿â½¨Á¢Á¬½Ó
public class Conn
{
context c ;
private String str_url="jdbc:odbc:newwork";
private String str_driver="sun.jdbc.odbc.JdbcOdbcDriver";
Statement stmt=null;
Connection con=null;
ResultSet rs=null;
int i=0;
public Conn()
{
//
try
{
Class.forName(str_driver);
con=DriverManager.getConnection(str_url);
}

catch(java.lang.Exception e)
{
System.err.println(e.getMessage());

}
}
//
public ResultSet executeSelect(String sql)
{
try
{

Statement stmt=con.createStatement();
rs=stmt.executeQuery(sql);


}
catch(SQLException se)
{
System.err.println(se.getMessage());

}
return rs;
}

//
public int execute(String sql)
{

try
{
Statement stmt=con.createStatement();
i=stmt.executeUpdate(sql);

}
catch(Exception e)
{
System.err.println(e.getMessage());
}
return i;
}

}
...全文
15 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zeusguitar 2003-08-24
  • 打赏
  • 举报
回复
import javax.sql.*;
import java.sql.*;

import java.util.*;
import javax.naming.*;
//import javax.transaction.UserTransaction;

public class DB {
String sDBDriver = "oracle.jdbc.driver.OracleDriver";
String sConnStr = "jdbc:oracle:thin:@192.168.0.100:1521:over";
String user = "infoway";
String pwd = "yitong2002";

Context context = null;
DataSource dataSource = null;

Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

public DB() {

}
/* public void testTrans()
{
try
{
context = new javax.naming.InitialContext();
UserTransaction ut = (UserTransaction)
context.lookup("java:comp/UserTransaction");
}catch(Exception e)
{}
}*/
public ResultSet executeQuery(String sql) {
try {
//context = new javax.naming.InitialContext();
//context = (Context) ctx.lookup("java:comp/env");
//dataSource =(DataSource) context.lookup("java:comp/env/jdbc/infowayDS");

//ORACLE IAS 专用
//dataSource = (DataSource) context.lookup("jdbc/infowayDS");
//conn = dataSource.getConnection();

//不支持DataSource使用
Class.forName(sDBDriver);
conn = DriverManager.getConnection(sConnStr,user,pwd);
stmt =
conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
if(stmt==null)
{
System.out.println("null");
}
rs = stmt.executeQuery(sql);
} catch (Exception ex) {
System.err.println("aq.executeQuery: " + ex.getMessage());
System.err.println("aq.executeQuerystrSQL: " + sql);
}
return rs;
}

public boolean executeUpdate(String sql) {
boolean label = true;
try {

//不支持DataSource使用
Class.forName(sDBDriver);
conn = DriverManager.getConnection(sConnStr,user,pwd);
//context = new javax.naming.InitialContext();
//context = (Context) ctx.lookup("java:comp/env");
//dataSource =(DataSource) context.lookup("java:comp/env/jdbc/infowayDS");
//ORACLE IAS 专用
//dataSource = (DataSource) context.lookup("jdbc/infowayDS");
//conn = dataSource.getConnection();
stmt =
conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
int count = stmt.executeUpdate(sql);
if (count == 1) {
label = true;
} else {
label = false;
}
} catch (Exception ex) {

label = false;
System.err.println("aq.executeUpdate: " + ex.getMessage());
System.err.println("aq.executeUpadatestrSQL: " + sql);

} finally {
closeConnection(conn, stmt, dataSource, context);
}
return label;
}

public boolean executeUpdate(Vector sql) {
boolean label = true;
int i = 0;
try {

//不支持DataSource使用
Class.forName(sDBDriver);
conn = DriverManager.getConnection(sConnStr,user,pwd);
//context = new javax.naming.InitialContext();
// context = (Context) ctx.lookup("java:comp/env");
//dataSource =(DataSource) context.lookup("java:comp/env/jdbc/infowayDS");
//ORACLE IAS 专用
//dataSource = (DataSource) context.lookup("jdbc/infowayDS");
//conn = dataSource.getConnection();
//conn.setAutoCommit(false);
stmt =
conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
try {
for (i = 0; i < sql.size(); i++) {
int count = stmt.executeUpdate((String) sql.get(i));
//System.out.println("count="+count);
if (count < 0) {
label = false;
break;
}
}
} catch (Exception ex) {
System.err.println("aq.executeUpdate[]: " + ex.getMessage());
System.err.println(
"aq.executeUpadatestrSQL:[] " + (String) sql.get(i));
label = false;
}
if (label == true) {
conn.commit();
} else {
conn.rollback();
}
conn.setAutoCommit(true);
} catch (Exception ex) {
label = false;
} finally {
closeConnection(conn, stmt, dataSource, context);
}
return label;
}

public void closeConnection(
Connection connection,
Statement statement,
DataSource dataSource,
Context context) {
try {
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
}
try {
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
}
try {
if (dataSource != null) {
dataSource = null;
}
} catch (Exception e) {
}
try {
if (context != null) {
context.close();
}
} catch (Exception e) {
}

}
public void closeConnection() {
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException e) {
}
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
}
try {
if (dataSource != null) {
dataSource = null;
}
} catch (Exception e) {
}
try {
if (context != null) {
context.close();
}
} catch (Exception e) {
}

}
public static void main(String[] args)
{

System.out.println("hello12");
try
{
DB db=new DB();
ResultSet rs=db.executeQuery("select * from people");
if(!rs.next())
{
System.out.println("not found");
}
else
{
do
{
String no=rs.getString("no");
System.out.println("no="+no);
} while(rs.next());
}


rs.close();

db.closeConnection();
}
catch(Exception e)
{
System.out.println(e.toString());
}
}
}



自己研究研究吧。保证可以用的
MasterChen 2003-08-24
  • 打赏
  • 举报
回复
以下是一个子类:


/*
*文件名:ListOfCheckAdv.java
*创建时间:2002-01-18 by chen
*修改时间:
*功能描述:
*/

package com.bitc;

import java.sql.*;
import com.bitc.*;
import java.io.*;
public class CheckLogin extends DBCon
{
String sql="{call Chen_CheckLogin(?,?,?)}";
CallableStatement stmt=null;
String cMessage=null;
String userName=null;
String password=null;
Statement stmt2=null;
ResultSet rs=null;

public CheckLogin()
{
super();
}

public String getCheckMessage(String userName,String Password) throws Exception
{
this.userName=userName;
this.password=Password;
stmt=con.prepareCall(sql);
stmt.setString(1,userName);
stmt.setString(2,password);
stmt.registerOutParameter(3,Types.VARCHAR);
stmt.executeUpdate();
cMessage=stmt.getString(3);
return cMessage;
}

public ResultSet get_WorkInviro(String userName) throws Exception
{
String sql2="select * from J_W where T_NO='"+userName+"'";
stmt2 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt2.executeQuery(sql2);
return rs;
}

public void cleanup() throws Exception
{
//if(rs!=null) rs.close();
stmt.close();
}
}
MasterChen 2003-08-24
  • 打赏
  • 举报
回复
/*
*文件名:DBCon.java
*创建时间:2003-03-29 by chen
*修改时间:
*功能描述:创建数据库连接,且为其它Bean的父类。
*/

package com.bitc;
import java.sql.*;
import java.io.*;

public abstract class DBCon
{
Connection con = null;
public DBCon(){}
public void BuildConnection()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:exam");
}catch(Exception e){}
}
public abstract void cleanup() throws Exception;
public void takeDown() throws Exception
{
cleanup();
con.close();
}
}
MasterChen 2003-08-24
  • 打赏
  • 举报
回复
为了便于维护,数据库链接应独立做成一个bean文件,以后的都只要继承这行了,以下是我的例子,简单不容易出错。
lxcspring 2003-08-21
  • 打赏
  • 举报
回复
这个类里添加关闭con方法,还有一些其他方法
whyxx 2003-08-21
  • 打赏
  • 举报
回复
stmt
con
rs
这三个东西,只要用完了就要马上关掉

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧