DROP TABLE IF EXISTS `hw_end`;
CREATE TABLE `hw_end` (
`rmUID` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`subnetrmUID` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`xPos` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`yPos` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`aEndname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`zEndname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`aEndrmUID` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`zEndrmUID` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`rate` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`direction` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`aLevel` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`zLevel` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
数据库如上,逻辑是先找出在相同subnetrmUID下的不同rmUID,根据不同的rmUID找出对应的aEndrmUID并且它的aLevel是汇聚点作为起始点,得到对应的一条数据,根据当前数据的zEndrmUID等于下一条的数据aEndrmUID,找出下一条数据,因为从第一条数据找到的下一条数据aEndrmUID有很多aEndrmUID,所以说要循环很多次去进行拿值,传值,之后找到的数据也是这种情况,这种情况下,能确定是的所有的aEndrmUID基本都是不同subnetrmUID下的rmUID,大致可以根据这个确定循环的次数,因为aEndrmUID基本在之前查找出rmUID的集合内,因为我每次拿值和获取值都是根据上一次查询的结果来获取的,这个在循环里怎么解决?还有需要把每次根据rmUID查找出来的数据进行排序,还一个是不同的rmUID也需要编号,怎么在循环里解决
下面是成环的数据,参考一下
根据我搜索到的信息,你可以使用JDBC(Java Database Connectivity)API来实现你的需求。123 你需要先建立两个数据库连接,一个用于查询原表,一个用于插入新表。1 然后,你需要使用Statement或PreparedStatement对象来执行SQL语句。23 你可以使用addBatch()和executeBatch()方法来批量执行多条SQL语句。2 你还需要使用ResultSet对象来获取查询结果,并使用next()方法来遍历每一条记录。3 你可以使用getXXX()方法来获取记录的各个字段值,然后使用setXXX()方法来设置插入语句的参数值。3
下面是一个示例代码,仅供参考:
import java.sql.*;
public class FindCycleData {
public static void main(String[] args) {
//定义数据库连接信息
String url = "jdbc:sqlserver://localhost:1433;databaseName=your_db_name";
String user = "your_user_name";
String password = "your_password";
//定义SQL语句
String sql_select = "SELECT * FROM hw_end WHERE aLevel = '汇聚点'"; //根据条件查询原表
String sql_insert = "INSERT INTO hw_end_cycle (rmUID, subnetrmUID, xPos, yPos, aEndname, zEndname, aEndrmUID, zEndrmUID, rate, direction, aLevel, zLevel) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; //插入新表
try {
//建立两个数据库连接
Connection conn_select = DriverManager.getConnection(url, user, password); //用于查询原表
Connection conn_insert = DriverManager.getConnection(url, user, password); //用于插入新表
//创建Statement或PreparedStatement对象
Statement stmt_select = conn_select.createStatement(); //用于执行查询语句
PreparedStatement pstmt_insert = conn_insert.prepareStatement(sql_insert); //用于执行插入语句
//执行查询语句,获取结果集
ResultSet rs = stmt_select.executeQuery(sql_select);
//遍历结果集,获取每一条记录的字段值
while (rs.next()) {
String rmUID = rs.getString("rmUID");
String subnetrmUID = rs.getString("subnetrmUID");
String xPos = rs.getString("xPos");
String yPos = rs.getString("yPos");
String aEndname = rs.getString("aEndname");
String zEndname = rs.getString("zEndname");
String aEndrmUID = rs.getString("aEndrmUID");
String zEndrmUID = rs.getString("zEndrmUID");
String rate = rs.getString("rate");
String direction = rs.getString("direction");
String aLevel = rs.getString("aLevel");
String zLevel = rs.getString("zLevel");
//设置插入语句的参数值
pstmt_insert.setString(1, rmUID);
pstmt_insert.setString(2, subnetrmUID);
pstmt_insert.setString(3, xPos);
pstmt_insert.setString(4, yPos);
pstmt_insert.setString(5, aEndname);
pstmt_insert.setString(6, zEndname);
pstmt_insert.setString(7, aEndrmUID);
pstmt_insert.setString(8, zEndrmUID);
pstmt_insert.setString(9, rate);
pstmt_insert.setString(10, direction);
pstmt_insert.setString(11, aLevel);
pstmt_insert.setString(12, zLevel);
//添加到批处理中
pstmt_insert.addBatch();
}
//执行批处理,插入新表
int[] counts = pstmt_insert.executeBatch();
//打印插入结果
System.out.println("