1、在链接数据库的jsp bean中用到了连接池, 多用户访问网站时,需要把下面回帖一的
getResultset和executeSql方法放在同步块中么?
2、数据库中有个字段限制最多有400个人填写(比如一个班最多可以报名400人),我把这个功能直接放在jsp里了,如回帖二
为了防止有多于400人写入这个字段,应该用同步吗?
对这个地方我很模糊,请大家给我讲讲
getResultset和executeSql方法放在同步块中么?
2、数据库中有个字段限制最多有400个人填写(比如一个班最多可以报名400人),我把这个功能直接放在jsp里了,如回帖二
为了防止有多于400人写入这个字段,应该用同步吗?
对这个地方我很模糊,请大家给我讲讲
public class SqlConn
{
private Connection conn = null;
private Statement stmt=null;
private ResultSet rs=null;
//注意构造函数不许有返回值,即使void也不行!!!!!!!!!
public SqlConn() throws SQLException
{
//getStatement();
stmt=getStatement();
}
public Statement getStatement() throws SQLException
{
DataSource ds = null;
try
{
Context ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/sqlserver");
if (ds != null)
{
conn = ds.getConnection();
}
}catch(Exception e)
{
e.printStackTrace();
}
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
return stmt;
} public ResultSet getResultset(String sql) throws SQLException
{
//stmt=getStatement();
rs = stmt.executeQuery(sql);
return rs;
} public int executeSql(String sql) throws SQLException
{
//stmt=getStatement();
int rs = stmt.executeUpdate(sql); return rs;
} public void dbClose()
{
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
}catch (SQLException e)
{
System.out.println(e);
}
}
}
<%!
public synchronized String executeUpdate(String sql_students_count,String sql_students_regist)
{
try{
SqlConn sqlconn=new SqlConn();
ResultSet rs=sqlconn.getResultset(sql_students_count);
if(rs.next())
{
if(rs.getInt(1)<400)//同时选择这个时间的人数 不能大于4 否则返回错误信息
{
sqlconn.executeSql(sql_students_regist);
sqlconn.dbClose();
return "succ";
}
else//人数超了
{
return "full";
}
}
else
{
return "server";
}
}catch(Exception e)
{
e.printStackTrace();
return "server";
}
}
%>