⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deletenode.java

📁 重要数据处理
💻 JAVA
字号:
import java.sql.*;
//import com.microsoft.jdbc.*; // 加载类库

public class deletenode{
  //定义全局变量

  //构造函数,初始化
  public deletenode()
  {
    System.out.println("开始运行递归删除程序");
  }
  //总循环
  public void dodelete() throws SQLException
    {
        while(true)
        {
            System.out.println("start....");
            dgdelete();        //递归减分处理函数
            System.out.println("等待下次....waiting");
            try
            {
                Thread.sleep(1000*60*10);  //timeInterval 由Administrator根据流量设置
            }
            catch (Exception ex)
            {
                System.out.println("Waked up "+ex);
            }
         }
    }
   //递归减分处理函数
   private void dgdelete() throws SQLException
   {

     String deletenode = null;
     String deletesbh = null;

     String dgbh = null;
     String dgsbh = null;
     String dglnbh = null;
     String dgrnbh = null;
     String zlnbh = null;
     String zrnbh = null;

     String[][] delete = new String[50][3];

     try {
       Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
       Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;User=sa;Password=sa;DatabaseName=goal");
       System.out.println("connected success!!!!");
       System.out.println("node delete,please wait......");
       Statement stmt = conn.createStatement();

       //从partroot开始,递归向上加分直到boss
       String sql2 = "SELECT BH,SBH FROM deletenodetable"; // ?问号就是要传递的参数,通过setInt()方法来设置需要的参数
       ResultSet rs2 = stmt.executeQuery(sql2);
       //将查询结果存入临时多维数组中
       int rowcount = 0; //查询结果的行数
       for (int i = 0; rs2.next(); i++) {
         delete[i][0] = rs2.getString("BH");
         delete[i][1] = rs2.getString("SBH");
         rowcount++;
       }
       //show a[][]
       for (int i = 0; i<rowcount; i++) {
         System.out.println(delete[i][0]+"\t"+delete[i][1]);
       }

       for(int j=0;j<rowcount;j++)
       {
         deletenode = delete[j][0];
         deletesbh = delete[j][1];
             //递归减分处理直到boss
             dgbh = deletenode; //赋初值
             for(;;){
               String sql4 = "SELECT SBH FROM net WHERE BH=?";
               PreparedStatement ps4 = conn.prepareStatement(sql4);
               ps4.setString(1, dgbh); //为dgbh递归编号的值
               ResultSet rs4 = ps4.executeQuery();
               while (rs4.next()) {
                 dgsbh = rs4.getString("SBH");
               }
               System.out.println("dgsbh:" + dgsbh);


               String sql5 = "SELECT LNBH,RNBH FROM net WHERE BH=?";
               PreparedStatement ps5 = conn.prepareStatement(sql5);
               ps5.setString(1, dgsbh); //为dgbh递归编号的值
               ResultSet rs5 = ps5.executeQuery();
               while (rs5.next()) {
                 dglnbh = rs5.getString("LNBH");
                 dgrnbh = rs5.getString("RNBH");
               }
               System.out.println("dglnbh:" + dglnbh);
               System.out.println("dgrnbh:" + dgrnbh);

               if (dglnbh != null && dglnbh.equals(dgbh)) {
                 //是其上线的左端子
                 String updatesql = "update net set LPV = LPV - 1000,LMAN = LMAN - 1 where BH='" + dgsbh + "'";
                 stmt.executeUpdate(updatesql);
                 System.out.println("是其上线的左端子");
               }
               if (dgrnbh != null && dgrnbh.equals(dgbh)) {
                 //是其上线的右端子
                 String updatesql2 = "update net set RPV = RPV - 1000,RMAN = RMAN - 1 where BH='" + dgsbh + "'";
                 stmt.executeUpdate(updatesql2);
                 System.out.println("是其上线的右端子");
               }
               if(dgsbh.equals("公司") || dgsbh==null) break; //boss 已加完积分,退出
               dgbh = dgsbh; //指针移到其上线
               System.out.println("指针移到其上线" + dgbh);
             }

             //删除deletenode在net表中的信息,且置其上线的LNBH,RNBH为NULL
               String sql6 = "SELECT LNBH,RNBH FROM net WHERE BH=?";
               PreparedStatement ps6 = conn.prepareStatement(sql6);
               ps6.setString(1, deletesbh); //为deletesbh编号的值
               ResultSet rs6 = ps6.executeQuery();
               while (rs6.next()) {
                 zlnbh = rs6.getString("LNBH");
                 zrnbh = rs6.getString("RNBH");
               }
               if (zlnbh != null && zlnbh.equals(deletenode)) {
                 //置其上线的左端子为NULL
                 String updatesql3 = "update net set LNBH=NULL where BH='" + deletesbh + "'";
                 stmt.executeUpdate(updatesql3);
                 System.out.println("置其上线的左端子为NULL");
               }
               if (zrnbh != null && zrnbh.equals(deletenode)) {
                 //置其上线的右端子为NULL
                 String updatesql4 = "update net set RNBH=NULL where BH='" + deletesbh + "'";
                 stmt.executeUpdate(updatesql4);
                 System.out.println("置其上线的右端子为NULL");
               }


        }


         System.out.println("Before delete");
         System.out.println("rowcount:" + rowcount);

         String deletesql = "DELETE FROM net WHERE BH=?";
         PreparedStatement ps7 = conn.prepareStatement(deletesql);
         for (int k = 0; k < rowcount; k++) {
           ps7.setString(1, delete[k][0]); //deletenode
           ps7.executeUpdate();
         }

         //删除的已经减完分的纪录
         String deletecmd = "DELETE FROM deletenodetable WHERE BH=?";
         PreparedStatement ps5 = conn.prepareStatement(deletecmd);
         for (int k = 0; k < rowcount; k++) {
           ps5.setString(1, delete[k][0]); //deletenode
           ps5.executeUpdate();
         }



     }
     catch (Exception ex) {
       System.err.println(ex.getMessage());
     }

   }

  public static void main(String[] args) throws SQLException{
    //定义变量
    deletenode var = new deletenode(); //定义一个对象,并初始化
    try
       {
            Thread.sleep(1000);  //系统启动之后5分钟后才运行后台程序,要等SQLServer启动之后
       }
    catch (Exception ex)
       {
                System.out.println("Waked up "+ex);
       }

    var.dodelete();     //开始

  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -