AdminClass.java
上传用户:sdtxjx
上传日期:2022-07-09
资源大小:2937k
文件大小:36k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. /***************************************************
  2.  *  
  3.  *  源文件名:  AdminClass.java
  4.  *  功    能: 梦想年华新闻系统 - 新闻类别管理类
  5.  * 作者:梦想年华 [DreamTime]
  6.  * Email:fanwsp@126.com
  7.  *  QQ:122142023 
  8.  *  CopyRight(c)2005-2006 by DreamTime 
  9.  *
  10.  ****************************************************
  11. */
  12. package dreamtime.dreamnews; //指定类所在的包
  13. import java.sql.*;
  14. import dreamtime.dreamnews.Function;
  15. import dreamtime.dreamnews.DBConnection;
  16. public class AdminClass
  17. {
  18.     DBConnection DBConn = new DBConnection();
  19.     Function Fun = new Function(); 
  20.     
  21.     public AdminClass()
  22.     {
  23.     
  24.     } 
  25.      
  26.   
  27.    /*********************************************************
  28. * 函数名:GetAllClass
  29. * 作  用:读取所有大类信息
  30. * 参  数:布尔型b:True 表示大类,否则表示小类
  31. *    s1,指定大类的ID
  32. * 返回值:字符串数二维组型。类别的各项信息
  33. ***********************************************************/
  34.     public String[][] GetAllClass(boolean b,boolean b1,String s1)
  35.     {
  36.      try
  37.      {
  38.      Connection Conn = DBConn.getConn();
  39.     Statement stmt = Conn.createStatement(1004,1007);
  40.     String sql = "";
  41.     int iMax = 0;
  42.     int ID = Fun.StrToInt(s1);
  43. if(!b1)
  44. {
  45.     if (b) //读取大类
  46.     {
  47.      sql = "select * from BigClass";
  48.     }
  49.     else     //读取小类
  50.     {
  51.      sql = "select * from SmallClass";
  52.      if (ID>0) 
  53.      sql = "select * from SmallClass where BigClassID=" + ID;
  54.     }
  55. }else sql = "select * from Special"; //读取专题
  56.     ResultSet rs = stmt.executeQuery(sql); 
  57.     rs.last();
  58.     iMax = rs.getRow(); 
  59.     if(iMax==0) return null;     
  60.     else
  61.     {
  62.      String [][] sArray = new String[iMax][3];
  63.     rs.first();
  64. int i=0;
  65. do
  66. {
  67.      sArray[i][0] = Integer.toString(rs.getInt(1));
  68.      sArray[i][1] = rs.getString(2);
  69.      if(!b) 
  70.      {
  71.      sArray[i][2] = Integer.toString(rs.getInt(4));
  72.      }
  73.      i++;
  74.     }while(rs.next());
  75. rs.close();
  76.     stmt.close();
  77.     Conn.close();
  78.     return sArray;
  79.     }
  80.     
  81.  }catch(Exception e){
  82.   ////e.printStackTrace();
  83.   return null;
  84.  }
  85. }
  86.   
  87.     
  88.     /*********************************************************
  89. * 函数名:ReadBigClass
  90. * 作  用:读取类别信息
  91. * 参  数:s:类别ID,b:为true表示为大类,否则为小类
  92. * 返回值:字符串数组型。类别的各项信息
  93. ***********************************************************/
  94.     public String[] ReadBigClass(String s,boolean b)
  95.     {
  96.      try
  97.      {
  98.      Connection Conn = DBConn.getConn();
  99.     Statement stmt = Conn.createStatement(1004,1007);
  100.     ResultSet rs = null;
  101.     String sql = null;
  102.     String [] sa = new String [3];
  103.     if (b) 
  104.     {
  105.      sql = "select * from BigClass where BigClassID=" + Fun.StrToInt(s);
  106.     rs = stmt.executeQuery(sql);
  107.     rs.next();
  108.     sa[0] = rs.getString("BigClassName");
  109.     sa[1] = rs.getString("BigClassInfo");
  110.  }
  111.  else
  112.  {
  113.   sql = "select * from SmallClass where SmallClassID=" + Fun.StrToInt(s);
  114.   rs = stmt.executeQuery(sql);
  115.     rs.next();
  116.     sa[0] = rs.getString("SmallClassName");
  117.     sa[1] = rs.getString("SmallClassInfo");
  118.     sa[2] = rs.getString("BigClassID");
  119.  }
  120.   rs.close();
  121.     stmt.close();
  122.     Conn.close();
  123.     return sa;
  124.  }catch(Exception e){
  125.   ////e.printStackTrace();
  126.   return null;
  127.  }
  128. }
  129. /*********************************************************
  130. * 函数名:ReadClassNews()
  131. * 作  用:读类别中的新闻数
  132. * 参  数:s:大类ID,b:为true表示为大类,否则为小类
  133. *         b1:是否为专题
  134. * 返回值:整型数组
  135. ***********************************************************/
  136.     public int [] ReadClassNews(int ID,boolean b,boolean b1)
  137.     {
  138.      try
  139.      {
  140.      Connection Conn1 = DBConn.getConn();
  141.     Statement stmt1 = Conn1.createStatement(1004,1007);
  142.     ResultSet rsNum = null;
  143.     String sql = null;
  144.     int [] iArray = new int[2];
  145. if(!b1)
  146. {
  147.     if (b) 
  148.     {
  149.      sql = "select count(*) from News where BigClassID=" + ID;
  150.     rsNum = stmt1.executeQuery(sql);
  151.     if(rsNum.next()) iArray[0] = rsNum.getInt(1);
  152.     else iArray[0]=0;
  153.     sql = "select count(*) from SmallClass where BigClassID=" + ID;
  154.     rsNum = stmt1.executeQuery(sql);
  155.     if(rsNum.next()) iArray[1] = rsNum.getInt(1);
  156.     else iArray[1]=0;
  157.  }
  158.  else
  159.  {
  160.   sql = "select count(*) from News where SmallClassID=" + ID;
  161.     rsNum = stmt1.executeQuery(sql);
  162.     if(rsNum.next()) iArray[0] = rsNum.getInt(1);
  163.     else iArray[0]=0;
  164.  }
  165. }
  166. else
  167. {
  168. sql = "select count(*) from News where SpecialID=" + ID;
  169.     rsNum = stmt1.executeQuery(sql);
  170.     if(rsNum.next()) iArray[0] = rsNum.getInt(1);
  171.     else iArray[0]=0;
  172. }
  173.   rsNum.close();
  174.     stmt1.close();
  175.     Conn1.close();
  176.     return iArray;
  177.  }catch(Exception e){
  178.   //e.printStackTrace();
  179.   return null;
  180.  }
  181. }
  182.     
  183.     
  184.     
  185.     /*********************************************************
  186. * 函数名:ReadClass
  187. * 作  用:读取所有类别
  188. * 参  数:无
  189. * 返回值:字符串
  190. ***********************************************************/
  191.     public String ReadClass()
  192.     {
  193.      try
  194.      {
  195.      Connection Conn = DBConn.getConn();
  196.     Statement stmt = Conn.createStatement(1004,1007);
  197.     Statement stmt1 = Conn.createStatement(1004,1007);
  198.     String sql = "select * from BigClass order by BigClassID";
  199.     ResultSet rs = stmt.executeQuery(sql);
  200.     StringBuffer sb = new StringBuffer();
  201.     
  202.     sb.append("<br><br><table width="90%"  border="1" align="center" cellpadding="2" cellspacing="0">rn");
  203. sb.append("<tr><td height="27" colspan="3"  background="images/bg.gif">");
  204. sb.append("<div align="center" class="title"><strong>新闻类别管理</strong></div></td>");
  205. sb.append("</tr>rn");
  206. sb.append("<tr>rn");
  207. sb.append("<td height="25" colspan="4"><strong>&nbsp;<a href="Admin_Class.jsp?Action=AddBigClass">");
  208. sb.append("<font color="#ff6600">[增加大类]</font></a></strong></td>rn");
  209. sb.append("</tr>rn");
  210. sb.append("<tr>rn");
  211. sb.append("<td height="25"><div align="center" class="chinese"><b>类别名称</b></div></td>rn");
  212. sb.append("<td><div align="center" class="chinese"><b>添加时间</b></div></td>rn");
  213. sb.append("<td><div align="center" class="chinese"><b>操作</b></div></td>rn");
  214. sb.append("</tr>rn");
  215. //如果表中没有任何记录,刚给出提示信息
  216. if (!rs.next())
  217. sb.append("<tr height="25" bgcolor="#d6dff7"  class="info1"><td colspan="3">rn");
  218. sb.append("<div align="center"><b>暂时没有任何大类!</b></div></td></tr>rn");
  219. }
  220. else 
  221. {
  222. while(!rs.isAfterLast())
  223. {
  224. int BigClassID = rs.getInt("BigClassID");
  225. String BigClassName = rs.getString("BigClassName");
  226. String BigClassInfo = rs.getString("BigClassInfo");
  227. int [] iBNum = ReadClassNews(BigClassID,true,false);
  228. sb.append("<tr class="chinese">rn");
  229. sb.append("<td width="40%" height='22' title="");
  230. sb.append(BigClassInfo);
  231. sb.append(""><div align="left">&nbsp;<img src='images/+.gif'><b>");
  232. sb.append(BigClassName + "</b>&nbsp;[" + BigClassID + "]");
  233. sb.append("&nbsp;[" + iBNum[0] + "/" + iBNum[1] + "]</div></td>rn");
  234. sb.append("<td width="30%"><div align="center">");
  235. sb.append(rs.getString("AddTime"));
  236. sb.append("</div></td>rn");
  237. sb.append("<td width="30%" class="chinese"><div align="right">[<a href="Admin_Class.jsp?Action=AddSClass&BigClassID=");
  238. sb.append(BigClassID);
  239. sb.append("">增加子类</a>][<a href="Admin_Class.jsp?Action=EditBigClass&BigClassID=");
  240. sb.append(BigClassID);
  241. sb.append("">修改</a>][<a href="Admin_Class.jsp?Action=DelBig&BigClassID=");
  242. sb.append(BigClassID);
  243. sb.append("">删除</a>]</div></td>rn");
  244. sb.append("</tr>rn");
  245. String sql1 = "select * from SmallClass where BigClassID=" + BigClassID;
  246.      ResultSet rs1= stmt1.executeQuery(sql1);
  247. while(rs1.next())
  248. {
  249. int SClassID = rs1.getInt("SmallClassID");
  250. int [] iSNum = ReadClassNews(SClassID,false,false);
  251. sb.append("<tr bgcolor="#d6dff7">rn");
  252. sb.append("<td class="chinese" height="20" Title="" + rs1.getString("SmallClassInfo") + ""><div align="left" class="chines">");
  253. sb.append("&nbsp;&nbsp;&nbsp;<img src='images/-.gif'>");
  254. sb.append(rs1.getString("SmallClassName") + "&nbsp;[" + SClassID + "]&nbsp;[" + iSNum[0] + "]</div></td>rn");
  255. sb.append("<td class="chinese"><div align="center" class="chines">");
  256. sb.append(rs1.getString("AddTime") + "</div></td>rn");
  257. sb.append("<td><div align="right" class="chinese">[<a href="Admin_Class.jsp?Action=EditSClass&SClassID=");
  258. sb.append(SClassID);
  259. sb.append("">修改</a>] [<a href="Admin_Class.jsp?Action=DelSmall&SClassID=");
  260. sb.append(SClassID);
  261. sb.append("">删除</a>]</div></td>rn");
  262. sb.append("</tr>rn");
  263. }
  264. rs.next();
  265. }
  266. }
  267. sb.append("</table>");
  268. sb.append("<br><br>");
  269. rs.close();
  270.      stmt.close();
  271.      Conn.close();
  272.     return sb.toString();
  273. }catch(Exception e)
  274.         {
  275.             //e.printStackTrace();
  276.             //System.out.print(e.getMessage());
  277.             return "No";
  278.         }
  279.     }
  280.     
  281.     
  282.     
  283.     /*********************************************************
  284. * 函数名:ReadSpecial
  285. * 作  用:读取专题列表
  286. * 参  数:无
  287. * 返回值:字符串
  288. ***********************************************************/
  289.     public String ReadSpecial()
  290.     {
  291.      try
  292.      {
  293.      Connection Conn = DBConn.getConn();
  294.     Statement stmt = Conn.createStatement(1004,1007);
  295.     String sql = "select * from Special";
  296.     ResultSet rs = stmt.executeQuery(sql);
  297.     StringBuffer sb = new StringBuffer();
  298.     sb.append("<br><br><table width="90%"  border="1" align="center" cellpadding="2" cellspacing="0">rn");
  299. sb.append("<tr><td height="27" colspan="3"  background="images/bg.gif">");
  300. sb.append("<div align="center" class="title"><strong>专题管理</strong></div></td>");
  301. sb.append("</tr>rn");
  302. sb.append("<tr>rn");
  303. sb.append("<td height="25" colspan="4"><strong>&nbsp;<a href="Admin_Special.jsp?Action=Add">");
  304. sb.append("<font color="#ff6600">[增加专题]</font></a></strong></td>rn");
  305. sb.append("</tr>rn");
  306. sb.append("<tr>rn");
  307. sb.append("<td height="25"><div align="center" class="chinese"><b>专题名称 专题ID/新闻数</b></div></td>rn");
  308. sb.append("<td><div align="center" class="chinese"><b>添加时间</b></div></td>rn");
  309. sb.append("<td><div align="center" class="chinese"><b>操作</b></div></td>rn");
  310. sb.append("</tr>rn");
  311. //如果表中没有任何记录,刚给出提示信息
  312. if (!rs.next())
  313. sb.append("<tr height="25" bgcolor="#d6dff7"  class="info1"><td colspan="3">rn");
  314. sb.append("<div align="center"><b>暂时没有任何专题!</b></div></td></tr>rn");
  315. }
  316. else 
  317. {
  318. while(!rs.isAfterLast())
  319. {
  320. int SpecialID = rs.getInt("SpecialID");
  321. String SpecialName = rs.getString("SpecialName");
  322. String SpecialInfo = rs.getString("SpecialInfo");
  323. int [] iSpNum = ReadClassNews(SpecialID,false,true);
  324. sb.append("<tr class="chinese" bgcolor="#d6dff7">rn");
  325. sb.append("<td width="50%" height='22' title="");
  326. sb.append(SpecialInfo);
  327. sb.append(""><div align="left">&nbsp;<img src='images/+.gif'><b>");
  328. sb.append(SpecialName + "</b>&nbsp;[" + SpecialID + "]/");
  329. sb.append("[" + iSpNum[0] + "]</div></td>rn");
  330. sb.append("<td width="30%"><div align="center">");
  331. sb.append(rs.getString("SpecialTime"));
  332. sb.append("</div></td>rn");
  333. sb.append("<td width="20%" class="chinese"><div align="right">");
  334. sb.append("[<a href="Admin_Special.jsp?Action=Edit&SpecialID=");
  335. sb.append(SpecialID);
  336. sb.append("">修改</a>][<a href="Admin_Special.jsp?Action=Del&SpecialID=");
  337. sb.append(SpecialID);
  338. sb.append("">删除</a>]</div></td>rn");
  339. sb.append("</tr>rn");
  340. rs.next();
  341. }
  342. }
  343. sb.append("</table>");
  344. sb.append("<br><br>");
  345. rs.close();
  346.      stmt.close();
  347.      Conn.close();
  348.     return sb.toString();
  349. }catch(Exception e)
  350.         {
  351.             //e.printStackTrace();
  352.             //System.out.print(e.getMessage());
  353.             return "No";
  354.         }
  355.     }
  356.     
  357.     
  358.     /*********************************************************
  359. * 函数名:ReadSpecial()
  360. * 作  用:读取某一专题的信息
  361. * 参  数:s:专题ID
  362. * 返回值:字符串数组型。类别的各项信息
  363. ***********************************************************/
  364.     public String[] ReadSpecial(String s)
  365.     {
  366.      try
  367.      {
  368.      Connection Conn = DBConn.getConn();
  369.     Statement stmt = Conn.createStatement(1004,1007);
  370.     ResultSet rs = null;
  371.     String sql = null;
  372.     String [] sa = new String [2];
  373.     int SpecialID = Fun.StrToInt(s);
  374.     if(SpecialID>0)
  375.     {
  376.      sql = "select * from Special where SpecialID=" + SpecialID;
  377.     rs = stmt.executeQuery(sql);
  378.     rs.next();
  379.     sa[0] = rs.getString(2);
  380.     sa[1] = rs.getString(3);
  381.   rs.close();
  382.     stmt.close();
  383.     Conn.close();
  384.     return sa;
  385.  }
  386.  else return null;
  387.  }catch(Exception e){
  388.   //e.printStackTrace();
  389.   return null;
  390.  }
  391. }
  392.     
  393.     
  394.     
  395.    /*********************************************************
  396. * 函数名:AddBigClass
  397. * 作  用:添加大类
  398. * 参  数:s1,大类ID;s2,大类标题;
  399. *       s3,大类说明;s4,操作用户,s5,IP地址
  400. * 返回值:字符串型。返回操作的信息
  401. ***********************************************************/
  402.     public String AddBigClass(String s1,String s2,String s3,String s4,String s5)
  403.     {
  404. try
  405.      {
  406.      boolean OK = true;
  407.      Connection Conn = DBConn.getConn();
  408.      Statement stmt = Conn.createStatement(1004,1007);
  409.      Statement stmt1 = Conn.createStatement(1004,1007);
  410.      ResultSet rs = null;
  411.      String sError = "";
  412.      int BigClassID = Fun.StrToInt(s1);
  413.      String BigClassName = Fun.CheckReplace(s2);
  414.      String BigClassInfo = Fun.CheckReplace(s3);
  415.      String [] sa1 = new String [3];
  416.      String [] sa2 = new String [3];
  417.      sa1[0] = s1;
  418.      sa1[1] = s2;
  419.      sa1[2] = s3;
  420.      sa2[0] = "大类排序";
  421.      sa2[1] = "大类标题";
  422.      sa2[2] = "大类说明";
  423.      String s = Fun.CheckDate(sa1,sa2);
  424.      if (BigClassID==0)
  425.      {
  426.      OK = false;
  427.      sError = "类别排序必须是大于 0 的整数!";
  428.      }
  429.      if (!s.equals("Yes"))
  430.      {
  431.      OK = false;
  432.      sError = s; 
  433.      }
  434.      if(OK)
  435.     {
  436.      String sql1 = "select * from BigClass where BigClassID=" + BigClassID;
  437.      String sql2 = "select * from BigClass where BigClassName='" + BigClassName + "'";
  438.      ResultSet rs1 = stmt.executeQuery(sql1);
  439.      ResultSet rs2 = stmt1.executeQuery(sql2);
  440.      if (rs1.next()) 
  441.      {
  442.      rs1.close();
  443.      OK = false;
  444.      sError = "<li>该排序数字 [ " + s1 + " ] 已经存在,不能重复!";
  445.      }
  446.      if (rs2.next())
  447.      {
  448.      rs2.close();
  449.      stmt1.close();
  450.      OK = false;
  451.      sError += "<li>该大类标题 [ " + s2 + " ] 已经存在,不能重复!";
  452.      }
  453.     }
  454.      if(OK)
  455.      {
  456.     
  457.      String NowTime = (new java.util.Date()).toLocaleString();
  458.      String [] sLog = new String[5];
  459.      String sql = "insert into BigClass (BigClassID,BigClassName,";
  460.      sql += "BigClassInfo,AddTime) values (";
  461.      sql += BigClassID + ",";
  462. sql += "'" + BigClassName + "',";
  463. sql += "'" + BigClassInfo + "',";
  464. sql += "'" + NowTime + "')";
  465.      stmt.executeUpdate(sql);
  466.      sLog[0] = Fun.CheckReplace(s4);
  467.      sLog[1] = "添加大类[" + BigClassName + "]";
  468.      sLog[2] = NowTime;
  469.      sLog[3] = Fun.CheckReplace(s5); 
  470.      sLog[4] = "Yes";
  471.      Fun.AddLog(sLog);
  472. stmt.close();
  473. Conn.close();
  474.      return "Yes";
  475.     }
  476.     else return sError;
  477.     }catch(Exception e)
  478.         {
  479.             ////e.printStackTrace();
  480.             //ystem.out.print(e.getMessage());
  481.             return "操作失败!";
  482.         }
  483.      }
  484.      
  485.     
  486.    /*********************************************************
  487. * 函数名:EditBigClass
  488. * 作  用:修改大类
  489. * 参  数:s1,大类新ID;s2,大类标题;
  490. *       s3,大类说明;s4,大类原ID;s5,原大类标题;
  491. *         s6,用户,s7,IP
  492. * 返回值:字符串型。返回操作的信息
  493. ***********************************************************/ 
  494.     public String EditBigClass(String s1,String s2,String s3,String s4,String s5,String s6,String s7)
  495.     {
  496. try
  497.      {
  498.      Connection Conn = DBConn.getConn();
  499.      Connection Conn1 = DBConn.getConn();
  500.      Statement stmt = Conn.createStatement(1004,1007);
  501.      Statement stmt1 = Conn1.createStatement(1004,1007);
  502.      Statement stmt2 = Conn1.createStatement(1004,1007);
  503.      ResultSet rs1 = null;
  504.      ResultSet rs2 = null;
  505.      boolean OK=true;
  506.      String sError="";
  507.      int NewBigClassID = Fun.StrToInt(s1);
  508.      int OldBigClassID = Fun.StrToInt(s4);
  509.      String NewBigClassName = Fun.CheckReplace(s2);
  510.      String OldBigClassName = Fun.CheckReplace(s5);
  511.      String BigClassInfo = Fun.CheckReplace(s3);
  512.      String [] sa1 = new String [3];
  513.      String [] sa2 = new String [3];
  514.      sa1[0] = s1;
  515.      sa1[1] = s2;
  516.      sa1[2] = s3;
  517.      sa2[0] = "大类排序";
  518.      sa2[1] = "大类标题";
  519.      sa2[2] = "大类说明";
  520.      String s = Fun.CheckDate(sa1,sa2);
  521.      if (NewBigClassID==0)
  522.      {
  523.      OK = false;
  524.      sError = "类别排序必须是大于 0 的整数!";
  525.      }
  526.      if (!s.equals("Yes"))
  527.      {
  528.      OK = false;
  529.      sError = s; 
  530.      }
  531.     if (OK)
  532.     {
  533.      String sql1 = "select * from BigClass where BigClassID=" + NewBigClassID;
  534.      String sql2 = "select * from BigClass where BigClassName='" + NewBigClassName + "'";
  535.      rs1 = stmt1.executeQuery(sql1);
  536.      rs2 = stmt2.executeQuery(sql2);
  537.      rs1.last();
  538.      rs2.last(); 
  539.      if ((NewBigClassID != OldBigClassID) && rs1.getRow()>0) 
  540.      {
  541.      rs1.close();
  542.      stmt1.close();
  543.      sError = "<li>该排序数字 [ " + s1 + " ] 已经存在,不能重复!";
  544.      OK = false;
  545.      }
  546.       if ((!OldBigClassName.equals(NewBigClassName)) && rs2.getRow()>0)
  547.      {
  548.      rs2.close();
  549.      stmt2.close();
  550.      sError += "<li>该大类标题 [ " + NewBigClassName + " ] 已经存在,不能重复!";
  551.      OK = false;
  552.      }
  553.     }
  554.      if(OK)
  555.      {
  556.      String sql = "update BigClass set ";
  557.      sql += "BigClassID='" + NewBigClassID + "',";
  558.      sql += "BigClassName='" + NewBigClassName + "',";
  559.      sql += "BigClassInfo='" + BigClassInfo + "'";
  560.      sql += " where BigClassID=" + OldBigClassID;
  561.      String sql1 = "update SmallClass set BigClassID=" + NewBigClassID + " where BigClassID=" + OldBigClassID;
  562.      String sql2 = "update News set BigClassID=" + NewBigClassID + " where BigClassID=" + OldBigClassID;
  563.      try 
  564.      {
  565.      Conn.setAutoCommit(false);  //更改JDBC默认事务提交方式
  566.      stmt.executeUpdate(sql);
  567.      stmt.executeUpdate(sql1);
  568.      stmt.executeUpdate(sql2);
  569.      Conn.commit(); //确认事务
  570.      Conn.setAutoCommit(true); //设为默认
  571. stmt.close();
  572. Conn.close();
  573. String NowTime = (new java.util.Date()).toLocaleString();
  574.      String [] sLog = new String[5];
  575. sLog[0] = Fun.CheckReplace(s6);
  576.      sLog[1] = "修改原大类[" + OldBigClassName + "]为[" + NewBigClassName + "]";
  577.      sLog[2] = NowTime;
  578.      sLog[3] = Fun.CheckReplace(s7); 
  579.      sLog[4] = "Yes";
  580.      Fun.AddLog(sLog);
  581.      return "Yes";
  582.     }catch (Exception e) {
  583. Conn.rollback(); //回滚JDBC事务
  584. //e.printStackTrace();
  585. Conn.close();
  586. return "事务操作失败!";
  587. }
  588.     }
  589.     else return sError;
  590.     }catch(Exception e)
  591.         {
  592.             ////e.printStackTrace();
  593.             //System.out.print(sql);
  594.             return "操作失败!";
  595.         }
  596.      }
  597.      
  598.      
  599.    /*********************************************************
  600. * 函数名:DelBigClass
  601. * 作  用:删除大类
  602. * 参  数:s1,大类新ID,s2,操作用户,s3,IP地址
  603. * 返回值:字符串型。返回操作的信息
  604. ***********************************************************/ 
  605.     public boolean DelBigClass(String s1,String s2,String s3)
  606.     {
  607. String NowTime = (new java.util.Date()).toLocaleString();
  608. String [] sLog = new String[5];
  609. sLog[0] = s2;
  610. sLog[2] = NowTime;
  611. sLog[3] = s3; 
  612. try
  613.      {
  614.      Connection Conn = DBConn.getConn();
  615.      Statement stmt = Conn.createStatement(1004,1007);
  616.      boolean OK=true;
  617.      int BigClassID = Fun.StrToInt(s1);
  618.      String sql1 = "delete from BigClass where BigClassID=" + BigClassID;
  619.      String sql2 = "delete from SmallClass where BigClassID=" + BigClassID;
  620.      String sql3 = "delete from News where BigClassID=" + BigClassID;
  621.     if (BigClassID>0)
  622.      { 
  623.     try{
  624.      Conn.setAutoCommit(false);  //更改JDBC默认事务提交方式
  625.      stmt.executeUpdate(sql1);
  626.      stmt.executeUpdate(sql2);
  627.      stmt.executeUpdate(sql3);
  628.      Conn.commit();
  629.      Conn.setAutoCommit(true); 
  630. stmt.close();
  631. Conn.close();
  632. sLog[0] = Fun.CheckReplace(s2);
  633.      sLog[1] = "删除ID为 [ " + s1 + " ] 的大类";
  634.      sLog[2] = NowTime;
  635.      sLog[3] = Fun.CheckReplace(s3); 
  636.      sLog[4] = "Yes";
  637.      Fun.AddLog(sLog);
  638.      return true;
  639.      }catch (Exception e) {
  640. Conn.rollback(); //回滚JDBC事务
  641. //e.printStackTrace();
  642. Conn.close();
  643. return false;
  644. }
  645. }else return false;
  646.     }catch(SQLException e)
  647.         {
  648.             ////e.printStackTrace();
  649.      sLog[1] = "删除ID为[" + s1 + "]的大类,操作出错!"; 
  650.      sLog[4] = "No";
  651.      Fun.AddLog(sLog);
  652.             //System.out.print(sql);
  653.             return false;
  654.         }
  655.      }
  656.  
  657.  
  658.   /*********************************************************
  659. * 函数名:AddSClass
  660. * 作  用:添加大类
  661. * 参  数:s2,小类标题;s3,小类说明
  662. *       s4,所属大类,s5,操作用户,s6,IP地址
  663. * 返回值:字符串型。返回操作的信息
  664. ***********************************************************/
  665.     public String AddSClass(String s2,String s3,String s4,String s5,String s6)
  666.     {
  667. try
  668.      {
  669.      boolean OK = true;
  670.      Connection Conn = DBConn.getConn();
  671.      Statement stmt = Conn.createStatement(1004,1007);
  672.      Statement stmt1 = Conn.createStatement(1004,1007);
  673.      ResultSet rs = null;
  674.      String sError = "";
  675.      int BigClassID = Fun.StrToInt(s4);
  676.      String SClassName = Fun.CheckReplace(s2);
  677.      String SClassInfo = Fun.CheckReplace(s3);
  678.      String [] sa1 = new String [2];
  679.      String [] sa2 = new String [2];
  680.      sa1[0] = s2;
  681.      sa1[1] = s3;
  682.      sa2[0] = "小类标题";
  683.      sa2[1] = "小类说明";
  684.      String s = Fun.CheckDate(sa1,sa2);
  685.      if (!s.equals("Yes"))
  686.      {
  687.      OK = false;
  688.      sError = s; 
  689.      }
  690.      if (BigClassID==0)
  691.      {
  692.      OK = false;
  693.      sError = "所属大类参数传递错误,请重试!"; 
  694.      }
  695.      if(OK)
  696.     {
  697.      String sql2 = "select * from SmallClass where SmallClassName='" + SClassName + "' and BigClassID=" + BigClassID;
  698.      ResultSet rs2 = stmt1.executeQuery(sql2);
  699.      if (rs2.next())
  700.      {
  701.      rs2.close();
  702.      stmt1.close();
  703.      OK = false;
  704.      sError += "<li>该小类标题 [ " + s2 + " ] 已经存在,不能重复!";
  705.      }
  706.     }
  707.      if(OK)
  708.      {
  709.      String NowTime = (new java.util.Date()).toLocaleString();
  710.      String [] sLog = new String[5];
  711.      String sql = "insert into SmallClass (SmallClassName,";
  712.      sql += "SmallClassInfo,BigClassID,AddTime) values (";
  713. sql += "'" + SClassName + "',";
  714. sql += "'" + SClassInfo + "',";
  715. sql += BigClassID + ",";
  716. sql += "'" + NowTime + "')";
  717.      stmt.executeUpdate(sql);
  718.      sLog[0] = Fun.CheckReplace(s5);
  719.      sLog[1] = "添加小类[" + SClassName + "]";
  720.      sLog[2] = NowTime;
  721.      sLog[3] = Fun.CheckReplace(s6); 
  722.      sLog[4] = "Yes";
  723.      Fun.AddLog(sLog);
  724. stmt.close();
  725. Conn.close();
  726.      return "Yes";
  727.     }
  728.     else return sError;
  729.     }catch(SQLException e)
  730.         {
  731.             ////e.printStackTrace();
  732.             //ystem.out.print(e.getMessage());
  733.             return "操作失败!";
  734.         }
  735.      }
  736.  
  737.  
  738.  
  739.   /*********************************************************
  740. * 函数名:EditSClass
  741. * 作  用:修改小类
  742. * 参  数:s0,所属大类,s1,小类ID;s2,小类标题;
  743. *       s3,小类说明;s4,原小类标题;
  744. *         s5,用户,s6,IP
  745. * 返回值:字符串型。返回操作的信息
  746. ***********************************************************/ 
  747.     public String EditSClass(String s0,String s1,String s2,String s3,String s4,String s5,String s6)
  748.     {
  749. try
  750.      {
  751.      Connection Conn = DBConn.getConn();
  752.      Statement stmt = Conn.createStatement(1004,1007);
  753.      Statement stmt1 = Conn.createStatement(1004,1007);
  754.      ResultSet rs1 = null;
  755.      ResultSet rs2 = null;
  756.      boolean OK=true;
  757.      String sError="";
  758.      int BigClassID = Fun.StrToInt(s0);
  759.      int SmallClassID = Fun.StrToInt(s1);
  760.      String NewSClassName = Fun.CheckReplace(s2);
  761.      String OldSClassName = Fun.CheckReplace(s4);
  762.      String SClassInfo = Fun.CheckReplace(s3);
  763.      String [] sa1 = new String [3];
  764.      String [] sa2 = new String [3];
  765.      sa1[0] = s0;
  766.      sa1[1] = s2;
  767.      sa1[2] = s3;
  768.      sa2[0] = "所属大类";
  769.      sa2[1] = "小类标题";
  770.      sa2[2] = "小类说明";
  771.      String s = Fun.CheckDate(sa1,sa2);
  772.      if (!s.equals("Yes"))
  773.      {
  774.      OK = false;
  775.      sError = s; 
  776.      }
  777.      if (SmallClassID==0 || BigClassID==0)
  778.      {
  779.      OK = false;
  780.      sError = "类别参数传递错误,请重试!"; 
  781.      }
  782.     if (OK)
  783.     {
  784.      String sql1 = "select * from SmallClass where SmallClassName='" + NewSClassName + "'";
  785.      rs1 = stmt1.executeQuery(sql1);
  786.      rs1.last();
  787.       if ((!OldSClassName.equals(s2)) && rs1.getRow()>0)
  788.      {
  789.      rs1.close();
  790.      stmt1.close();
  791.      sError += "<li>该小类标题 [ " + s2 + " ] 已经存在,不能重复!";
  792.      OK = false;
  793.      }
  794.     }
  795.      if(OK)
  796.      {
  797.      String sql = "update SmallClass set ";
  798.      sql += "SmallClassName='" + NewSClassName + "',";
  799.      sql += "SmallClassInfo='" + SClassInfo + "',";
  800.      sql += "BigClassID=" + BigClassID;
  801.      sql += " where SmallClassID=" + SmallClassID;
  802.   //Conn.setAutoCommit(false);
  803.      stmt.executeUpdate(sql);
  804.      //Conn.commit();
  805.      //Conn.setAutoCommit(true);
  806. stmt.close();
  807. Conn.close();
  808. String NowTime = (new java.util.Date()).toLocaleString();
  809.      String [] sLog = new String[5];
  810. sLog[0] = Fun.CheckReplace(s5);
  811.      sLog[1] = "修改原小类[" + OldSClassName + "]为[" + NewSClassName + "]";
  812.      sLog[2] = NowTime;
  813.      sLog[3] = Fun.CheckReplace(s6); 
  814.      sLog[4] = "Yes";
  815.      Fun.AddLog(sLog);
  816.      return "Yes";
  817.     }
  818.     else return sError;
  819.     }catch(SQLException e)
  820.         {
  821.             ////e.printStackTrace();
  822.             //System.out.print(sql);
  823.             return "操作失败!";
  824.         }
  825.      }
  826.      
  827.  
  828.  
  829.   /*********************************************************
  830. * 函数名:DelSClass
  831. * 作  用:删除小类
  832. * 参  数:s1,小类ID,s2,操作用户,s3,IP地址
  833. * 返回值:成功 true,否则false
  834. ***********************************************************/ 
  835.     public boolean DelSClass(String s1,String s2,String s3)
  836.     {
  837. String NowTime = (new java.util.Date()).toLocaleString();
  838. String [] sLog = new String[5];
  839. sLog[0] = s2;
  840. sLog[2] = NowTime;
  841. sLog[3] = s3; 
  842. try
  843.      {
  844.      Connection Conn = DBConn.getConn();
  845.      Statement stmt = Conn.createStatement(1004,1007);
  846.      boolean OK=true;
  847.      int SClassID = Fun.StrToInt(s1);
  848.      String sql1 = "delete from SmallClass where SmallClassID=" + SClassID;
  849.      String sql2 = "delete from News where SmallClassID=" + SClassID;
  850. if(SClassID>0)
  851. {   
  852. try
  853.     {
  854.      //用事物处理,防止程序出错。
  855.      Conn.setAutoCommit(false); //更改默认事物处理
  856.      stmt.executeUpdate(sql1);
  857.      stmt.executeUpdate(sql2);
  858.      Conn.commit();
  859.      Conn.setAutoCommit(true);
  860. stmt.close();
  861. Conn.close();
  862.      sLog[1] = "删除ID为 [ " + s1 + " ] 的小类"; 
  863.      sLog[4] = "Yes";
  864.      Fun.AddLog(sLog);
  865.      return true;
  866.     }catch (Exception e) {
  867. Conn.rollback(); //回滚JDBC事务
  868. ////e.printStackTrace();
  869. Conn.close();
  870. return false;
  871. }  
  872. }else return false;
  873.     }catch(SQLException e)
  874.         {
  875.             ////e.printStackTrace();
  876.      sLog[1] = "删除ID为[" + s1 + "]的小类,操作出错!"; 
  877.      sLog[4] = "No";
  878.      Fun.AddLog(sLog);
  879.             //System.out.print(sql);
  880.             return false;
  881.         }
  882.      }
  883.  
  884.  
  885.   /*********************************************************
  886. * 函数名:AddSpecial
  887. * 作  用:添加大类
  888. * 参  数:s1,专题名称;s2,专题说明
  889. *    s3,操作用户,s4,IP地址
  890. * 返回值:字符串型。返回操作的信息
  891. ***********************************************************/
  892.     public String AddSpecial(String s1,String s2,String s3,String s4)
  893.     {
  894. try
  895.      {
  896.      boolean OK = true;
  897.      Connection Conn = DBConn.getConn();
  898.      Statement stmt = Conn.createStatement(1004,1007);
  899.      ResultSet rs = null;
  900.      String sError = "";
  901.      String SpecialName = Fun.CheckReplace(s1);
  902.      String SpecialInfo = Fun.CheckReplace(s2);
  903.      String [] sa1 = new String [2];
  904.      String [] sa2 = new String [2];
  905.      sa1[0] = s1;
  906.      sa1[1] = s2;
  907.      sa2[0] = "专题名称";
  908.      sa2[1] = "专题说明";
  909.      String s = Fun.CheckDate(sa1,sa2);
  910.      if (!s.equals("Yes"))
  911.      {
  912.      OK = false;
  913.      sError = s; 
  914.      }
  915.      if(OK)
  916.     {
  917.      String sql1 = "select * from Special where SpecialName='" + SpecialName + "'";
  918.      ResultSet rs1 = stmt.executeQuery(sql1);
  919.      if (rs1.next()) 
  920.      {
  921.      rs1.close();
  922.      OK = false;
  923.      sError = "<li>该排专题名称 [ " + s1 + " ] 已经存在,不能重复!";
  924.      }
  925.     }
  926.      if(OK)
  927.      {
  928.      String NowTime = (new java.util.Date()).toLocaleString();
  929.      String [] sLog = new String[5];
  930.      String sql = "insert into Special (SpecialName,";
  931.      sql += "SpecialInfo,SpecialTime) values (";
  932. sql += "'" + SpecialName + "',";
  933. sql += "'" + SpecialInfo + "',";
  934. sql += "'" + NowTime + "')";
  935.      stmt.executeUpdate(sql);
  936.      sLog[0] = Fun.CheckReplace(s3);
  937.      sLog[1] = "添加专题[" + SpecialName + "]";
  938.      sLog[2] = NowTime;
  939.      sLog[3] = Fun.CheckReplace(s4); 
  940.      sLog[4] = "Yes";
  941.      Fun.AddLog(sLog);
  942. stmt.close();
  943. Conn.close();
  944.      return "Yes";
  945.     }
  946.     else return sError;
  947.     }catch(Exception e)
  948.         {
  949.             //e.printStackTrace();
  950.             //ystem.out.print(e.getMessage());
  951.             return "操作失败!";
  952.         }
  953.      }
  954.  
  955.  
  956.  
  957.  
  958.   /*********************************************************
  959. * 函数名:EditSpecial
  960. * 作  用:修改专题
  961. * 参  数:s1,专题名称;s2,专题说明,s3,操作用户
  962. *    s4,IP地址,s5,专题ID,s6,原专题名称
  963. * 返回值:字符串型。返回操作的信息
  964. ***********************************************************/ 
  965.     public String EditSpecial(String s1,String s2,String s3,String s4,String s5,String s6)
  966.     {
  967. try
  968.      {
  969.      Connection Conn = DBConn.getConn();
  970.      Statement stmt = Conn.createStatement(1004,1007);
  971.      ResultSet rs = null;
  972.      boolean OK=true;
  973.      String sError="";
  974.      int SpecialID = Fun.StrToInt(s5);
  975.      String SpecialName = Fun.CheckReplace(s1);
  976.      String OldSpecialName = Fun.CheckReplace(s6);
  977.      String SpecialInfo = Fun.CheckReplace(s2);
  978.      String [] sa1 = new String [2];
  979.      String [] sa2 = new String [2];
  980.      sa1[0] = s1;
  981.      sa1[1] = s2;
  982.      sa2[0] = "专题名称";
  983.      sa2[1] = "专题说明";
  984.      String s = Fun.CheckDate(sa1,sa2);
  985.      if (!s.equals("Yes"))
  986.      {
  987.      OK = false;
  988.      sError = s; 
  989.      }
  990.      if (SpecialID==0)
  991.      {
  992.      OK = false;
  993.      sError = "参数传递错误"; 
  994.      }
  995.     if (OK)
  996.     {
  997.      String sql1 = "select * from Special where SpecialName='" + SpecialName + "'";
  998.      rs = stmt.executeQuery(sql1);
  999.      rs.last();
  1000.       if ((!OldSpecialName.equals(SpecialName)) && rs.getRow()>0)
  1001.      {
  1002.      rs.close();
  1003.      stmt.close();
  1004.      sError += "<li>该专题名称 [ " + SpecialName + " ] 已经存在,不能重复!";
  1005.      OK = false;
  1006.      }
  1007.     }
  1008.      if(OK)
  1009.      {
  1010.      String sql = "update Special set ";
  1011.      sql += "SpecialName='" + SpecialName + "',";
  1012.      sql += "SpecialInfo='" + SpecialInfo + "'";
  1013.      sql += " where SpecialID=" + SpecialID;
  1014.      stmt.executeUpdate(sql);
  1015. stmt.close();
  1016. Conn.close();
  1017. String NowTime = (new java.util.Date()).toLocaleString();
  1018.      String [] sLog = new String[5];
  1019. sLog[0] = Fun.CheckReplace(s3);
  1020.      sLog[1] = "修改原专题[" + OldSpecialName + " ]为[" + SpecialName + " ]";
  1021.      sLog[2] = NowTime;
  1022.      sLog[3] = Fun.CheckReplace(s4); 
  1023.      sLog[4] = "Yes";
  1024.      Fun.AddLog(sLog);
  1025.      return "Yes";
  1026.     
  1027.     }
  1028.     else return sError;
  1029.     }catch(Exception e)
  1030.         {
  1031.             //e.printStackTrace();
  1032.             //System.out.print(sql);
  1033.             return "操作失败!";
  1034.         }
  1035.      }
  1036.  
  1037.  
  1038.  
  1039.   /*********************************************************
  1040. * 函数名:DelSpecial
  1041. * 作  用:删除专题
  1042. * 参  数:s1,专题ID,s2,操作用户,s3,IP地址
  1043. * 返回值:成功 true,否则false
  1044. ***********************************************************/ 
  1045.     public boolean DelSpecial(String s1,String s2,String s3)
  1046.     {
  1047. String NowTime = (new java.util.Date()).toLocaleString();
  1048. String [] sLog = new String[5];
  1049. sLog[0] = s2;
  1050. sLog[2] = NowTime;
  1051. sLog[3] = s3; 
  1052. try
  1053.      {
  1054.      Connection Conn = DBConn.getConn();
  1055.      Statement stmt = Conn.createStatement(1004,1007);
  1056.      boolean OK=true;
  1057.      int SpecialID = Fun.StrToInt(s1);
  1058.      String sql1 = "delete from Special where SpecialID=" + SpecialID;
  1059.      String sql2 = "delete from News where SpecialID=" + SpecialID;
  1060. if(SpecialID>0)
  1061. {   
  1062. try
  1063.     {
  1064.      //用事物处理,防止程序出错。
  1065.      Conn.setAutoCommit(false); //更改默认事物处理
  1066.      stmt.executeUpdate(sql1);
  1067.      stmt.executeUpdate(sql2);
  1068.      Conn.commit();
  1069.      Conn.setAutoCommit(true);
  1070. stmt.close();
  1071. Conn.close();
  1072.      sLog[1] = "删除ID为[" + s1 + "]的专题"; 
  1073.      sLog[4] = "Yes";
  1074.      Fun.AddLog(sLog);
  1075.      return true;
  1076.     }catch (Exception e) {
  1077. Conn.rollback(); //回滚JDBC事务
  1078. ////e.printStackTrace();
  1079. Conn.close();
  1080. return false;
  1081. }  
  1082. }else return false;
  1083.     }catch(SQLException e)
  1084.         {
  1085.             //e.printStackTrace();
  1086.      sLog[1] = "删除ID为[" + s1 + "] 的专题,操作出错!"; 
  1087.      sLog[4] = "No";
  1088.      Fun.AddLog(sLog);
  1089.             //System.out.print(sql);
  1090.             return false;
  1091.         }
  1092.      }
  1093.  
  1094.  
  1095.  
  1096.    //测试
  1097. public static void main(String[] args)
  1098. {
  1099. AdminClass aClass = new AdminClass();
  1100. //System.out.print(aClass.AddBigClass("11","地方新闻1","地方","znl","172.16.166.51"));
  1101. //boolean b = aClass.DelBigClass("7","dream","172.16.166.50");
  1102. //if (b) System.out.println("Yes");
  1103. //else System.out.println("No");
  1104. //System.out.print(aClass.EditBigClass("5","国内新闻","国内新闻","10","国际新闻","dream","localhost"));
  1105. //System.out.print(aClass.ReadClass("AdminClass.jsp","1"));
  1106. //System.out.print(aClass.EditSClass("1","5","军事新闻","军事新闻","军事","dream","localhost"));
  1107. String [][] as1 = aClass.GetAllClass(true,true,null);
  1108. //String [][] sa = new String[5][2];
  1109. //System.out.print(sa.length);
  1110. //if(aClass.DelSClass("fjdlf","http://ww","2")) System.out.print("Yes");
  1111. //else System.out.print("No");
  1112. if(as1==null) System.out.print("null");
  1113. else
  1114. {
  1115. for(int i=0;i<as1.length;i++)
  1116. {
  1117. System.out.println(as1[i][0]+","+as1[i][1]);
  1118. }
  1119. }
  1120. //System.out.print(aClass.ReadSpecial("1")[0]);
  1121. }
  1122. }