?? threaddaoimpljdbc.java
字號:
*/
public void updateTopic_Body_Icon(int threadID, // primary key
String threadTopic, String threadBody, String threadIcon)
throws ObjectNotFoundException, DatabaseException {
Connection connection = null;
PreparedStatement statement = null;
StringBuffer sql = new StringBuffer(512);
sql.append("UPDATE " + TABLE_NAME + " SET ThreadTopic = ?, ThreadBody = ?, ThreadIcon = ?");
sql.append(" WHERE ThreadID = ?");
try {
connection = DBUtils.getConnection();
statement = connection.prepareStatement(sql.toString());
// // column(s) to update
statement.setString(1, threadTopic);
if (DBUtils.getDatabaseType() == DBUtils.DATABASE_ORACLE) {
statement.setCharacterStream(2, new StringReader(threadBody), threadBody.length());
} else {
statement.setString(2, threadBody);
}
statement.setString(3, threadIcon);
// primary key column(s)
statement.setInt(4, threadID);
if (statement.executeUpdate() != 1) {
throw new ObjectNotFoundException("Cannot update table Thread where primary key = (" + threadID + ").");
}
m_dirty = true;
} catch(SQLException sqle) {
log.error("Sql Execution Error!", sqle);
throw new DatabaseException("Error executing SQL in ThreadDAOImplJDBC.update.");
} finally {
DBUtils.closeStatement(statement);
DBUtils.closeConnection(connection);
}
}
/**
* This method should be call only when we can make sure that threadID is in database
*/
public void increaseReplyCount(int threadID)
throws DatabaseException, ObjectNotFoundException {
Connection connection = null;
PreparedStatement statement = null;
String sql = "UPDATE " + TABLE_NAME + " SET ThreadReplyCount = ThreadReplyCount + 1 WHERE ThreadID = ?";
try {
connection = DBUtils.getConnection();
statement = connection.prepareStatement(sql);
statement.setInt(1, threadID);
if (statement.executeUpdate() != 1) {
throw new ObjectNotFoundException("Cannot update the ThreadReplyCount in table Thread. Please contact Web site Administrator.");
}
//@todo: coi lai cho nay
// ATTENTION !!!
setDirty(true);
} catch (SQLException sqle) {
log.error("Sql Execution Error!", sqle);
throw new DatabaseException("Error occured when update Thread: column name = ThreadReplyCount.");
} finally {
DBUtils.closeStatement(statement);
DBUtils.closeConnection(connection);
}
}
/*
* Included columns: LastPostMemberName
* Excluded columns: ThreadID, ForumID, MemberName, ThreadTopic, ThreadBody,
* ThreadVoteCount, ThreadVoteTotalStars, ThreadCreationDate, ThreadLastPostDate, ThreadType,
* ThreadOption, ThreadStatus, ThreadHasPoll, ThreadViewCount, ThreadReplyCount,
* ThreadIcon, ThreadDuration
*/
public void updateLastPostMemberName(int threadID, // primary key
String lastPostMemberName)
throws ObjectNotFoundException, DatabaseException, ForeignKeyNotFoundException {
//we also allow guests to send posts (if admin allows that)
if ((lastPostMemberName!=null) && (lastPostMemberName.length()>0)) {
try {
// @todo: modify the parameter list as needed
// If this method does not change the foreign key columns, you can comment this block of code.
DAOFactory.getMemberDAO().findByAlternateKey_MemberName(lastPostMemberName);
} catch(ObjectNotFoundException e) {
throw new ForeignKeyNotFoundException("Foreign key refers to table 'Member' does not exist. Cannot update table 'Forum'.");
}
} else lastPostMemberName=""; //so we don't get 'null' in sql query
Connection connection = null;
PreparedStatement statement = null;
StringBuffer sql = new StringBuffer(512);
sql.append("UPDATE " + TABLE_NAME + " SET LastPostMemberName = ?");
sql.append(" WHERE ThreadID = ?");
try {
connection = DBUtils.getConnection();
statement = connection.prepareStatement(sql.toString());
// // column(s) to update
statement.setString(1, lastPostMemberName);
// primary key column(s)
statement.setInt(2, threadID);
if (statement.executeUpdate() != 1) {
// Some drivers dont update database if it detect old and new data are the same
// @todo: should check driver, not check database
// Currently there is only one driver: Caucho MySql driver
if ( DBUtils.getDatabaseType() != DBUtils.DATABASE_MYSQL ) {
throw new ObjectNotFoundException("Cannot update table Thread where primary key = (" + threadID + ").");
} else {
log.warn("WARNING: By pass the check for Caucho MySql driver.");
}
}
setDirty(true);
} catch(SQLException sqle) {
log.error("Sql Execution Error!", sqle);
throw new DatabaseException("Error executing SQL in ThreadDAOImplJDBC.update.");
} finally {
DBUtils.closeStatement(statement);
DBUtils.closeConnection(connection);
}
}
/*
* Included columns: ThreadLastPostDate
* Excluded columns: ThreadID, ForumID, MemberName, LastPostMemberName, ThreadTopic,
* ThreadBody, ThreadVoteCount, ThreadVoteTotalStars, ThreadCreationDate, ThreadType,
* ThreadOption, ThreadStatus, ThreadHasPoll, ThreadViewCount, ThreadReplyCount,
* ThreadIcon, ThreadDuration
*/
public void updateLastPostDate(int threadID, // primary key
Timestamp threadLastPostDate)
throws ObjectNotFoundException, DatabaseException {
Connection connection = null;
PreparedStatement statement = null;
StringBuffer sql = new StringBuffer(512);
sql.append("UPDATE " + TABLE_NAME + " SET ThreadLastPostDate = ?");
sql.append(" WHERE ThreadID = ?");
try {
connection = DBUtils.getConnection();
statement = connection.prepareStatement(sql.toString());
// // column(s) to update
statement.setTimestamp(1, threadLastPostDate);
// primary key column(s)
statement.setInt(2, threadID);
if (statement.executeUpdate() != 1) {
throw new ObjectNotFoundException("Cannot update table Thread where primary key = (" + threadID + ").");
}
m_dirty = true;
} catch(SQLException sqle) {
log.error("Sql Execution Error!", sqle);
throw new DatabaseException("Error executing SQL in ThreadDAOImplJDBC.update.");
} finally {
DBUtils.closeStatement(statement);
DBUtils.closeConnection(connection);
}
}
/*
* Included columns: ForumID, MemberName, LastPostMemberName, ThreadTopic, ThreadBody,
* ThreadVoteCount, ThreadVoteTotalStars, ThreadCreationDate, ThreadLastPostDate, ThreadType,
* ThreadOption, ThreadStatus, ThreadHasPoll, ThreadViewCount, ThreadReplyCount,
* ThreadIcon, ThreadDuration
* Excluded columns: ThreadID
*/
public ThreadBean getBean(int threadID)
throws ObjectNotFoundException, DatabaseException {
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
StringBuffer sql = new StringBuffer(512);
sql.append("SELECT ForumID, MemberName, LastPostMemberName, ThreadTopic, ThreadBody, ThreadVoteCount, ThreadVoteTotalStars, ThreadCreationDate, ThreadLastPostDate, ThreadType, ThreadOption, ThreadStatus, ThreadHasPoll, ThreadViewCount, ThreadReplyCount, ThreadIcon, ThreadDuration");
sql.append(" FROM " + TABLE_NAME);
sql.append(" WHERE ThreadID = ?");
try {
connection = DBUtils.getConnection();
statement = connection.prepareStatement(sql.toString());
statement.setInt(1, threadID);
resultSet = statement.executeQuery();
if(!resultSet.next()) {
throw new ObjectNotFoundException("Cannot find the row in table Thread where primary key = (" + threadID + ").");
}
ThreadBean bean = new ThreadBean();
// @todo: uncomment the following line(s) as needed
bean.setThreadID(threadID);
bean.setForumID(resultSet.getInt("ForumID"));
bean.setMemberName(resultSet.getString("MemberName"));
bean.setLastPostMemberName(resultSet.getString("LastPostMemberName"));
bean.setThreadTopic(resultSet.getString("ThreadTopic"));
bean.setThreadBody(resultSet.getString("ThreadBody"));
bean.setThreadVoteCount(resultSet.getInt("ThreadVoteCount"));
bean.setThreadVoteTotalStars(resultSet.getInt("ThreadVoteTotalStars"));
bean.setThreadCreationDate(resultSet.getTimestamp("ThreadCreationDate"));
bean.setThreadLastPostDate(resultSet.getTimestamp("ThreadLastPostDate"));
bean.setThreadType(resultSet.getInt("ThreadType"));
bean.setThreadOption(resultSet.getInt("ThreadOption"));
bean.setThreadStatus(resultSet.getInt("ThreadStatus"));
bean.setThreadHasPoll(resultSet.getInt("ThreadHasPoll"));
bean.setThreadViewCount(resultSet.getInt("ThreadViewCount"));
bean.setThreadReplyCount(resultSet.getInt("ThreadReplyCount"));
bean.setThreadIcon(resultSet.getString("ThreadIcon"));
bean.setThreadDuration(resultSet.getInt("ThreadDuration"));
return bean;
} catch(SQLException sqle) {
log.error("Sql Execution Error!", sqle);
throw new DatabaseException("Error executing SQL in ThreadDAOImplJDBC.getBean(pk).");
} finally {
DBUtils.closeResultSet(resultSet);
DBUtils.closeStatement(statement);
DBUtils.closeConnection(connection);
}
}
/**
* Note: this is a customized method
*/
public int getNumberOfEnableBeans_inForum(int forumID)
throws AssertionException, DatabaseException {
return getNumberOfBeans_inForum(forumID, true);
}
public int getNumberOfDisableBeans_inForum(int forumID)
throws AssertionException, DatabaseException {
return getNumberOfBeans_inForum(forumID, false);
}
private int getNumberOfBeans_inForum(int forumID, boolean enable)
throws AssertionException, DatabaseException {
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
StringBuffer sql = new StringBuffer(512);
sql.append("SELECT Count(*)");
sql.append(" FROM " + TABLE_NAME);
sql.append(" WHERE ForumID = ?");
if (enable) {
sql.append(" AND ThreadStatus <> 1 ");
} else {//disable
sql.append(" AND ThreadStatus = 1 ");
}
try {
connection = DBUtils.getConnection();
statement = connection.prepareStatement(sql.toString());
statement.setInt(1, forumID);
resultSet = statement.executeQuery();
if (!resultSet.next()) {
throw new AssertionException("Assertion in ThreadDAOImplJDBC.getNumberOfThreads.");
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -