📄 deletenode.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 + -