📄 cardcom.java
字号:
package control;
import model.*;
import java.sql.*;
import java.util.Vector;
public class CardCom
{
private Connection con;
/**
* 构造函数 取得与数据库的连接
* @param url 数据库的url
* @param database 数据库名
* @param pasw 数据库的密码
*/
public CardCom(String url,String database,String pasw)
{
con = new GetConnection(url,database,pasw).getConnection();
}
/**
* 添加新的帖子,帖子ID由数据库自动赋值
* @param UserName
* @param Title
* @param Keyword
* @param Content
* @param PassOrNot
* @param CName
*/
public void aadCard(String FileName,String UserName,String Title,String Keyword,String Content,boolean PassOrNot,String CName,String CPath,String TitleDetail,String TuiJian,String Date,String zuozhe,String Souce)
{
PreparedStatement pre1;
String sql = "insert into cardinf(image,UserName,Title,Keyword,Content,PassOrNot,CName,CPath, TitleDetail,TuiJian,Date,zuozhe,Souce) values(?,?,?,?,?,?,?,?,?,?,?,?,?)";
try
{
pre1 = con.prepareStatement(sql);
pre1.setString(1, FileName);
pre1.setString(2, UserName);
pre1.setString(3,Title);
pre1.setString(4, Keyword);
//pre1.setString(3,Keyword);
pre1.setString(5,Content);
pre1.setBoolean(6, PassOrNot);
pre1.setString(7,CName);
pre1.setString(8, CPath);
pre1.setString(9, TitleDetail);
pre1.setString(10, TuiJian);
pre1.setString(11,Date);
pre1.setString(12,zuozhe);
pre1.setString(13,Souce);
pre1.executeUpdate();
if(PassOrNot == true) //如果是管理员发帖(管理员发帖的时候PassOrNot会被设置为真)则不用通过审核
{
new UserCom("jdbc:mysql://localhost/mybbs","root", "root123").addTieziShuliang(UserName);//增加该帖子所属作者的发贴数
new CategoryCom("jdbc:mysql://localhost/mybbs","root", "root123").addCCount(CName);//增加该帖子所受类别的贴子总数
}
//pre1.executeUpdate();
}
catch(SQLException e){System.out.println("SQLException at aadCard");}
}
/**
* 查询该帖子得有回复数
* @param CardID
* @return
*/
public int getCount(int CardID)
{
int count;
String sql = "select Counnt from cardinf where CardID = ?";
PreparedStatement pre;
try
{
pre = con.prepareStatement(sql);
pre.setInt(1,CardID);
ResultSet rs = pre.executeQuery();
if(rs.next())
{
count = rs.getInt("Counnt");
}
else
count = 0;
return count;
}
catch(SQLException e){return 0;}
}
/**
* 删除该帖子 只有管理员有该权限
* 删除帖子的同时 要在用户表里修改用户发贴数 同时要在所属类别里面减少该类别的帖子数 若该帖子有回复 则在恢复表里删除所有回复记录
* 在回复表中的记录
* @param ID 帖子ID
* @param UserName 帖子作者
* @param CName 帖子所属类别
*/
public boolean delCard(int ID)
{
PreparedStatement pre;
String sql = "delete from cardinf where CardID = ?";
Card card = getCard(ID);
try
{
pre = con.prepareStatement(sql);
pre.setInt(1, ID);
pre.execute();
new UserCom("jdbc:mysql://localhost/mybbs","root", "root123").delTieziShuliang(card.getUserName());//减少该帖子所属作者的发贴总数TieziShuliang
new CategoryCom("jdbc:mysql://localhost/mybbs","root", "root123").delCCount(card.getCName());//减少该帖子所属分类中的帖子总数CCount
new HuiFuCom("jdbc:mysql://localhost/mybbs","root", "root123").delAllHuiFu(ID);//删除该帖子所有回复
//pre.execute();
return true;
}
catch(SQLException e){return false;}
}
/**
* 根据帖子ID 增加该帖子的回复数
* @param Count 帖子回复数
* @param CardID 帖子ID
*/
public void addCount(int CardID)
{
int count = 0;
PreparedStatement pre;
String sql = "update cardinf set Counnt = ? where CardID = ?";
//String sql2 = "select Counnt where CardID = ?";
try
{
pre = con.prepareStatement(sql);
count = getCount(CardID); //取得该帖子的回复数
pre.setInt(1, count+1);
pre.setInt(2, CardID);
pre.execute();
}
catch(SQLException e){}
}
public void delCount(int CardID)
{
int count = 0;
PreparedStatement pre;
String sql = "update cardinf set Counnt = ? where CardID = ?";
try
{
pre = con.prepareStatement(sql);
count = getCount(CardID); //取得该帖子的回复数
pre.setInt(1, count-1);
pre.setInt(2, CardID);
pre.execute();
}
catch(SQLException e){}
}
public boolean updateCard(int CardID,String Content,String TitleDetail,String TuiJian,String Date)
{
PreparedStatement pre;
String sql = "update cardinf set Content = ?,TitleDetail = ?,TuiJian = ?,Date = ? where CardID = ?";
try
{
pre = con.prepareStatement(sql);
pre.setString(1, Content);
pre.setString(2, TitleDetail);
pre.setString(3, TuiJian);
pre.setString(4, Date);
pre.setInt(5, CardID);
pre.execute();
}
catch(SQLException e){return false;}
return true;
}
/**
* 根据帖子ID修改该帖子的 审核情况(是否通过审核) 只有管理员有该权限
* 只有审核通过的帖子 才能在用户表里增加该用户的帖子数,才能在该帖子所属类别增加帖子总数目
* @param PassOrNot 审核情况
* @param CardID
*/
public void updatePassOrNot(int CardID,String UserName,String CPath,String passornot)
{
PreparedStatement pre;
if(passornot.equals("pass"))
{
String sql = "update cardinf set PassOrNot = ? where CardID = ?";
try
{
pre = con.prepareStatement(sql);
pre.setBoolean(1, true);
pre.setInt(2, CardID);
new UserCom("jdbc:mysql://localhost/mybbs","root", "root123").addTieziShuliang(UserName);//增加该帖子所属作者的发贴数
new CategoryCom("jdbc:mysql://localhost/mybbs","root", "root123").addCCount(CPath);//增加该帖子所受类别的贴子总数
pre.execute();
}
catch(SQLException e){}
}
else
{
String sql = "delete from cardinf where CardID = ?";
try
{
pre = con.prepareStatement(sql);
pre.setInt(1, CardID);
pre.execute();
}
catch(SQLException e){}
}
}
/**
* 获取该帖子详细资料
* @param CardID
* @return
*/
public Card getCard(int CardID)
{
PreparedStatement pre;
Card card = new Card(CardID);
String sql = "select * from cardinf where CardID = ?";
try
{
pre = con.prepareStatement(sql);
pre.setInt(1, CardID);
ResultSet rs = pre.executeQuery();
if(rs.next())
{
card.setFileName(rs.getString("image"));
card.setUserName(rs.getString("UserName"));
card.setTitle(rs.getString("Title"));
card.setKyeword(rs.getString("Keyword"));
card.setContent(rs.getString("Content"));
card.setPassOrNot(rs.getBoolean("PassOrNot"));
card.setCName(rs.getString("CName"));
card.setCount(rs.getInt("Counnt"));
card.setCPath(rs.getString("CPath"));
card.setTitleDetail(rs.getString("TitleDetail"));
card.setTuiJian(rs.getString("TuiJian"));
card.setDate(rs.getString("Date"));
card.setZuozhe(rs.getString("zuozhe"));
card.setSouce(rs.getString("Souce"));
return card;
}
else
return null;
}
catch(SQLException e){return null;}
}
/**
* 取出该页码数要显示的数据
* @param CName 类别名
* @param pagenum 页码数 每页15行
* @return
*/
public Vector getAllCardBySize(String CPath,int pagenum,String order_condition)
{
PreparedStatement pre;
int begin = 0;
begin = (pagenum-1)*8;
Vector vc = new Vector();
String sort;
if(order_condition.equals("byTime"))
sort = new String("Date");
else
sort = new String("Counnt");
if(CPath.equals("all"))
{
String sql = "select * from cardinf where PassOrNot=true order by "+sort+" desc limit " + begin + ",8" ;
try
{
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(sql);
while(rs.next())
{
Card card = new Card(rs.getInt("CardID"));
card.setFileName(rs.getString("image"));
card.setUserName(rs.getString("UserName"));
card.setTitle(rs.getString("Title"));
card.setKyeword(rs.getString("Keyword"));
card.setContent(rs.getString("Content"));
card.setPassOrNot(rs.getBoolean("PassOrNot"));
card.setCName(rs.getString("CName"));
card.setCount(rs.getInt("Counnt"));
card.setCPath(rs.getString("CPath"));
card.setTitleDetail(rs.getString("TitleDetail"));
card.setTuiJian(rs.getString("TuiJian"));
card.setDate(rs.getString("Date"));
card.setZuozhe(rs.getString("zuozhe"));
card.setSouce(rs.getString("Souce"));
vc.add(card);
}
return vc;
}
catch(Exception e){return null;}
}
else
{
String sql = "select * from cardinf where (CPath LIKE '" + CPath +"%' or CPath = '" +CPath+"') and PassOrNot = ? order by "+sort+" desc limit " + begin + ",8" ;
try
{
pre = con.prepareStatement(sql);
//pre.setString(1, CName);
pre.setBoolean(1, true);
ResultSet rs = pre.executeQuery();
while(rs.next())
{
Card card = new Card(rs.getInt("CardID"));
card.setFileName(rs.getString("image"));
card.setUserName(rs.getString("UserName"));
card.setTitle(rs.getString("Title"));
card.setKyeword(rs.getString("Keyword"));
card.setContent(rs.getString("Content"));
card.setPassOrNot(rs.getBoolean("PassOrNot"));
card.setCName(rs.getString("CName"));
card.setCount(rs.getInt("Counnt"));
card.setCPath(rs.getString("CPath"));
card.setTitleDetail(rs.getString("TitleDetail"));
card.setTuiJian(rs.getString("TuiJian"));
card.setDate(rs.getString("Date"));
card.setZuozhe(rs.getString("zuozhe"));
card.setSouce(rs.getString("Souce"));
vc.add(card);
}
return vc;
}
catch(SQLException e){return null;}
}
}
/**
* 以关键字查询帖子
* @param Keyword
* @return
*/
public Vector getAllCardByKeyword(String Keyword,String CPath,int pagenum ,String order_condition)
{
int begin = 0;
begin = (pagenum-1)*8;
String sort;
Vector vc = new Vector();
String sql;
if(order_condition.equals("byTime"))
sort = new String("Date");
else
sort = new String("Counnt");
if(CPath.equals("all"))
{
if(Keyword.equals("all"))
sql = "select * from cardinf where PassOrNot=true order by "+sort+" desc limit " + begin + ",8";
else
sql = "select * from cardinf where PassOrNot=true and (Title like '%" +Keyword+"%' or Keyword like '%" + Keyword + "%' ) order by "+sort+" desc limit " + begin + ",8";
}
else
{
if(Keyword.equals("all"))
sql = "select * from cardinf where PassOrNot=true and CPath LIKE '" + CPath + "%' order by "+sort+" desc limit " + begin + ",8";
else
sql = "select * from cardinf where PassOrNot=true and CPath LIKE '" + CPath + "%' and (Title like '%" +Keyword+"%' or Keyword like '%" + Keyword + "%') order by "+sort+" desc limit " + begin + ",8";
}
try
{
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(sql);
while(rs.next())
{
Card card = new Card(rs.getInt("CardID"));
card.setFileName(rs.getString("image"));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -