我是用DAO封装,即用一个JAVA类封装数据(或BEAN),然后每次传一条数据,不单独传字段。就不会存在这种问题啦。
解决方案 »
- 又是JavaMail 问题...请各位大侠赐教...
- JSP中html:hidden的问题!!
- Struts中配置数据库连接,在Action中调用出错!!!!
- 各位大哥帮帮忙小弟急!!!
- 一个简单的分级目录问题,请各位大虾千万要帮我解决哦,在线急,超急急急急急急急急急急急急!!!
- 启动tomcat后能让DOS窗口在后台运行吗?
- 如何在web.xml里面设置程序初始化参数呢?
- 对门户网站开发有研究的进来!!!
- 紧急求助
- 请大家帮帮忙,看看我的程序什么地方不对,谢谢了,在线等,我是jsp的初学者
- 请大哥们帮我看看这是什么问题啊!
- STRUCTS中为何找到了我的action类确无法调用,结果跳转到一个空页面?(100分求助`~`~~)
public synchronized void a(){}
不过我建议数据库开发时少用线程,线程很占用系统资源的。
1.没有必要在数据库层共用一个stmt,而是共用一个Connection.
共用一个stmt,应该在一个"线程"中使用而且对stmt操作不会太久.2.每次都createStatement应该马上关闭stmt.当然无法再实行getString.楼主可以自己封装数据-->关闭stmt-->返回调用者3.多线程操作,同意 reelcol(reelcol).
to GJA106(中文字符):
如果在stmt.close之前getString,那这个String在stmt.close之后还有效么?
您说的自己封装数据是什么意思?
如果在stmt.close之前getString,那这个String在stmt.close之后还有效么?
您说的自己封装数据是什么意思?
晕
怎么会没效果,
你把数据放在其他的里面,比如,数组等集合中,怎么会无效机制可要明白哦
呵呵,就是不明白机制才来问的啊
可否把机制说的详细些?
public class DocBaseMan{
Context ctx=null;
DataSource ds=null;
SysLog log=null;
ChangeEncoding ce=null;
//构造函数
public DocBaseMan(){
//从连接池中获取数据库连接
try{
ctx=new InitialContext();
ds=(DataSource)ctx.lookup("documents");
}
catch(NamingException e){
e.printStackTrace();
}
//建立一个日志类的实例
log=new SysLog();
ce=new ChangeEncoding();
}
public String getAdminOfDocBase(String name)
{
Connection con = null;
PreparedStatement ps = null;
ResultSet rs=null;
String admin="";
try{
String strQuery = "select admin from docBase where name=?";
con = ds.getConnection();//从连接池获得连接
ps = con.prepareStatement(strQuery);
ps.setString(1,ce.changeCharset(name));
rs=ps.executeQuery();
if(rs.next())
admin=rs.getString("admin")
}
catch(SQLException e){
e.printStackTrace();
}
finally{
if (rs != null) try {rs.close();}
catch (SQLException ignore) {}
if (ps != null) try {ps.close();}
catch (SQLException ignore) {}
if (con != null) try {con.close();}
catch (SQLException ignore) {}
}
return admin;
}
}这样,就不会出现多线程中的并发问题因为,conn stmt rs都是局部变量数据可以放在一个VO里,或者集合数组字符串中这样,数据层的代码就不会出现这表现层了,在表现层就是数据传输对象在传值