| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- import jpype
- import jpype.imports
- from jpype.types import *
- import sys
- def test_database():
- """测试达梦数据库连接和查询"""
- try:
- # 达梦数据库驱动路径
- dm_driver_path = "D:\\dmdbms\\drivers\\jdbc\\DmJdbcDriver18.jar"
-
- # 启动JVM
- jpype.startJVM(jpype.getDefaultJVMPath(), "-Djava.class.path=%s" % dm_driver_path)
-
- # 导入Java类
- from java.sql import DriverManager, Connection, Statement, ResultSet
-
- # 数据库连接信息
- url = "jdbc:dm://192.168.0.145:30236?charset=utf8"
- username = "WATERSHED"
- password = "WaterShed./1224"
-
- # 加载驱动
- from dm.jdbc.driver import DmDriver
-
- # 建立连接
- conn = DriverManager.getConnection(url, username, password)
- print("✅ 数据库连接成功")
-
- # 创建执行语句
- stmt = conn.createStatement()
-
- # 查询 WATERSHED_MODEL 表
- sql = "SELECT model_id, model_name, create_time, update_time FROM WATERSHED_MODEL"
- print(f"\n执行查询: {sql}")
-
- rs = stmt.executeQuery(sql)
-
- # 打印查询结果
- print("\n查询结果:")
- print(f"{'模型ID':<8} {'模型名称':<20} {'创建时间':<20} {'更新时间':<20}")
- print("-" * 80)
-
- count = 0
- while rs.next():
- model_id = rs.getLong("model_id")
- model_name = rs.getString("model_name")
- create_time = rs.getTimestamp("create_time")
- update_time = rs.getTimestamp("update_time")
-
- print(f"{model_id:<8} {model_name:<20} {str(create_time):<20} {str(update_time):<20}")
- count += 1
-
- print(f"\n查询到 {count} 条记录")
-
- # 检查是否有记录的创建时间为 null
- if count > 0:
- print("\n检查创建时间字段:")
- stmt2 = conn.createStatement()
- sql2 = "SELECT COUNT(*) AS null_count FROM WATERSHED_MODEL WHERE create_time IS NULL"
- rs2 = stmt2.executeQuery(sql2)
-
- if rs2.next():
- null_count = rs2.getInt("null_count")
- print(f"创建时间为 null 的记录数: {null_count}")
-
- if null_count > 0:
- print("⚠️ 发现创建时间为 null 的记录")
-
- # 尝试更新这些记录的创建时间
- print(f"\n尝试更新 {null_count} 条记录的创建时间...")
- sql3 = "UPDATE WATERSHED_MODEL SET create_time = SYSDATE, update_time = SYSDATE WHERE create_time IS NULL"
- affected_rows = stmt.executeUpdate(sql3)
- print(f"成功更新 {affected_rows} 条记录")
-
- # 提交事务
- conn.commit()
- print("✅ 事务提交成功")
-
- # 关闭资源
- rs.close()
- stmt.close()
- conn.close()
-
- print("\n✅ 测试完成")
-
- except Exception as e:
- print(f"\n❌ 发生异常: {type(e).__name__}: {e}")
- import traceback
- print(f"\n堆栈跟踪: {traceback.format_exc()}")
- finally:
- # 关闭JVM
- if jpype.isJVMStarted():
- jpype.shutdownJVM()
- if __name__ == "__main__":
- test_database()
|