maven项目连接DM数据库和基本sql使用

news/2025/9/17 14:49:46/文章来源:https://www.cnblogs.com/cilye/p/19096706
直接引入Maven依赖
<!-- DM数据库JDBC驱动 -->
<dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.3.140</version>
</dependency>

demo连接代码

public static void main(String[] args) {// 数据库连接信息Connection conn = null;Statement stmt = null;ResultSet rs = null;try {// 加载DM JDBC驱动Class.forName("dm.jdbc.driver.DmDriver");System.out.println("达梦JDBC驱动加载成功");// 连接到DM数据库 后面跟的库表/模式名String url = "jdbc:dm://localhost:5236/UNIONIST";String user = "SYSDBA";String password = "123456";conn = DriverManager.getConnection(url, user, password);System.out.println("数据库连接成功");// 检查数据库元数据DatabaseMetaData metaData = conn.getMetaData();System.out.println("数据库产品: " + metaData.getDatabaseProductName());System.out.println("数据库版本: " + metaData.getDatabaseProductVersion());// 在连接建立后添加System.out.println("连接的数据库: " + metaData.getURL());System.out.println("当前用户: " + metaData.getUserName());System.out.println("当前模式: " + conn.getSchema()); // DM8支持// 检查表是否存在ResultSet tables = metaData.getTables(null, null, "CITY", new String[]{"TABLE"});if (tables.next()) {System.out.println("找到表: " + tables.getString("TABLE_NAME"));} else {System.out.println("未找到CITY表,尝试不区分大小写查找...");// 尝试不区分大小写查找tables = metaData.getTables(null, null, null, new String[]{"TABLE"});while (tables.next()) {String tableName = tables.getString("TABLE_NAME");if ("CITY".equalsIgnoreCase(tableName)) {System.out.println("找到类似表(不区分大小写): " + tableName);}}}tables.close();// 创建Statement用于执行SQL语句stmt = conn.createStatement();// 先执行一个简单测试查询String testSql = "SELECT COUNT(*) AS cnt FROM USER_TABLES";ResultSet testRs = stmt.executeQuery(testSql);if (testRs.next()) {System.out.println("数据库中的表数量: " + testRs.getInt("cnt"));}testRs.close();// 执行查询并获取结果集String sql = "SELECT * FROM TEST.CITY order by region_id desc";System.out.println("执行SQL: " + sql);rs = stmt.executeQuery(sql);System.out.println("查询执行完成");// 获取结果集元数据ResultSetMetaData rsmd = rs.getMetaData();int columnCount = rsmd.getColumnCount();System.out.println("查询返回列数: " + columnCount);for (int i = 1; i <= columnCount; i++) {System.out.println("列 " + i + ": " + rsmd.getColumnName(i) + " (" + rsmd.getColumnTypeName(i) + ")");}// 处理结果集int rowCount = 0;while (rs.next()) {String id = rs.getString("CITY_ID");String name = rs.getString("CITY_NAME");String region = rs.getString("REGION_ID");// 输出城市信息System.out.println("City ID: " + id + ", Name: " + name + ", Region: " + region);rowCount++;}if (rowCount == 0) {System.out.println("查询成功,但没有返回任何数据");// 尝试另一种查询方式System.out.println("尝试查询所有表数据...");String allDataSql = "SELECT * FROM " +"(SELECT TABLE_NAME FROM USER_TABLES WHERE ROWNUM <= 5)";ResultSet allDataRs = stmt.executeQuery(allDataSql);while (allDataRs.next()) {System.out.println("表名: " + allDataRs.getString("TABLE_NAME"));}allDataRs.close();} else {System.out.println("总共查询到 " + rowCount + " 条记录");}} catch (ClassNotFoundException e) {System.err.println("找不到达梦JDBC驱动: " + e.getMessage());e.printStackTrace();} catch (SQLException e) {System.err.println("数据库操作错误: " + e.getMessage());System.err.println("SQL状态: " + e.getSQLState());System.err.println("错误代码: " + e.getErrorCode());e.printStackTrace();} finally {// 关闭资源try {if (rs != null) rs.close();if (stmt != null) stmt.close();if (conn != null) conn.close();System.out.println("数据库连接已关闭");} catch (SQLException e) {e.printStackTrace();}}}

以上的代码救能对数据库进行相关操作了

附件个配置文件的方式

application.properties 方式

# DM数据库连接配置
spring.datasource.url=jdbc:dm://localhost:5236/your_database_name
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver

application.yml 方式

spring:datasource:url: jdbc:dm://localhost:5236/your_database_name
    username: your_usernamepassword: your_passworddriver-class-name: dm.jdbc.driver.DmDriver

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/906624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【中国计算机学会CCF主办】第六届人工智能、大数据与算法国际学术会议(CAIBDA 2026)

第六届人工智能、大数据与算法国际学术会议(CAIBDA 2026) 2026 6th International Conference on Artificial Intelligence, Big Data and Algorithms (CAIBDA 2026)重要信息 大会时间:2026年6月12-14日 大会地点:天津(线上同步进行) 大会官网:www.caibda.org *为报名…

【中国计算机学会CCF主办】第六届人工智能、大数据与算法国际学术会议(CAIBDA 2026)

第六届人工智能、大数据与算法国际学术会议(CAIBDA 2026) 2026 6th International Conference on Artificial Intelligence, Big Data and Algorithms (CAIBDA 2026)重要信息 大会时间:2026年6月12-14日 大会地点:天津(线上同步进行) 大会官网:www.caibda.org *为报名…

仿腾讯会议——退出房间

客户端 1、添加绘图成员 2、 实现视频的重绘事件 3、实现关闭函数 定义信号和函数 关闭函数实现 添加清空列表功能 在房间内添加用户映射表 中介者退出函数 移除用户展示界面 离开房间请求处理 服务端

蓝桥杯分享经验

系列文章目录 提示&#xff1a;小白先看系列 第一章 蓝桥杯的钱白给吗 文章目录 系列文章目录前言一、自我介绍二、经验讲解:1.基础知识2.进阶知识3.个人观点 三、总结四、后续 前言 第十六届蓝桥杯已经省赛已经结束了&#xff0c;相信很多小伙伴也已经得到自己的成绩了。接下…

C++:面试题汇总

C 基础 指针和引用的区别 指针是一个变量&#xff0c;存储的另一个变量的内存地址&#xff0c; 可以重复赋值执行不同的对象&#xff0c;运行为nullptr 适合动态分配&#xff0c;例如使用new,delete时&#xff1b; 用在实现链表、树等数据结构时&#xff1b; 以及明确没有对象…

python调wfdb库读心电数据库的注释文件中NUL问题

切入点如题。开始使用字符串中通配符&#xff0c;没用。查找DeepSeek给出下面结果&#xff1a; 在 Python 中&#xff0c;字符串中出现 [NUL] 表示字符串包含一个 ASCII 空字符&#xff08;ASCII 值为 0 的字符&#xff0c;即 \x00&#xff09;。这个符号通常是某些编辑器或调…

iOS Runtime与RunLoop的对比和使用

Runtime 机制 核心概念 Objective-C 的动态特性&#xff1a;Objective-C 是一门动态语言&#xff0c;很多工作都是在运行时而非编译时决定的消息传递机制&#xff1a;方法调用实际上是发送消息 objc_msgSend(receiver, selector, ...)方法决议机制&#xff1a;动态方法解析、…

【信息系统项目管理师】第16章:项目采购管理 - 23个经典题目及详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第…

fscan教程1-存活主机探测与端口扫描

实验目的 本实验主要介绍fscan工具信息收集功能&#xff0c;对同一网段的主机进行存活探测以及常见服务扫描。 技能增长 通过本次实验的学习&#xff0c;了解信息收集的过程&#xff0c;掌握fscan工具主机探测和端口扫描功能。 预备知识 fscan工具有哪些作用&#xff1f; …

kafka在线增加分区副本数

1、问题来源 线上有一个物联网项目依赖kafka集群中指定主题消费&#xff0c;前些天kafka集群中的某一台机器出现了故障&#xff0c;导致kafka这个主题的数据一直无法消费&#xff0c;经查发现为了保证消息的顺序性此主题仅设置了一个分区&#xff0c;但是副本也仅有一个&#…

高等数学-积分

一、不定积分 定理&#xff1a;如果函数f(x)在区间I上连续&#xff0c;那么f(x)在区间I上一定有原函数&#xff0c;即一定存在区间I上的可导函数F(x)&#xff0c;使得F(x)f(x) &#xff0c;x∈I 简单地说&#xff1a;连续函数必有原函数。 极限lim*0->x {[∫*0^x sin(t^2)…

Java 多线程编程:解锁高性能应用开发的密钥

在计算机编程的广袤领域中&#xff0c;Java 凭借其跨平台性、丰富的类库和强大的生态系统&#xff0c;成为众多开发者&#xff0c;尤其是大学生入门编程的热门选择。而在 Java 的众多特性里&#xff0c;多线程编程宛如一颗璀璨的明珠&#xff0c;掌握它对于开发高性能、响应迅速…

【设计模式】责任链+模板+工程模式使用模板

前言 方便写出优雅&#xff0c;解耦&#xff0c;高内聚&#xff0c;高复用的代码。 Demo // 1. 定义验证器接口&#xff08;责任链模式&#xff09; public interface Validator {Validator setNext(Validator next);boolean validate(Data data); }// 2. 创建抽象验证器&am…

智能体应用如何重塑未来生活?全面解析技术场景与实在Agent突破

智能体应用有哪些&#xff1f;在科技飞速发展的当下&#xff0c;人工智能正以前所未有的速度渗透到我们生活的方方面面。而智能体技术&#xff0c;作为人工智能领域的一颗璀璨新星&#xff0c;正逐渐展现出其重塑未来生活的巨大潜力。从办公效率的提升到医疗服务的优化&#xf…

【2025-05-22】XXL-JOB 的 8810 端口添加到 CentOS 6.5 的防火墙白名单

要将 XXL-JOB 的 8810 端口添加到 CentOS 6.5 的防火墙白名单中&#xff0c;需修改 iptables 规则。以下是具体步骤&#xff1a; 1. 编辑防火墙配置文件 vi /etc/sysconfig/iptables2. 添加 XXL-JOB 端口规则 在 INPUT 链的 ACCEPT 规则部分&#xff08;例如在开放 80/443 端…

【大前端】使用NodeJs HTTP模块创建web服务器、SSE通讯

Nodejs构建web服务器有很多中方式&#xff0c;常见的有两种&#xff1a;express&#xff0c;http.Server&#xff1a; express&#xff1a;轻量级的Nodejs web服务器&#xff0c;功能完善&#xff0c;支持自定义插件http.Server&#xff1a;NodeJ内置模块&#xff0c;比expres…

Python 响应报文提取方式

简介 响应报文分为JSON格式和字符串格式&#xff0c;往往响应报文中有很多个字段和多层嵌套&#xff0c;如何快速的提取字段key和对应的value值呢&#xff1f;有三种提取方式&#xff1a;jsonpath提取、正则表达式、字符串切片。jsonpath是针对JSON格式的数据提取&#xff0c;…

《大模型开源与闭源的深度博弈:科技新生态下的权衡与抉择》

开源智能体大模型的核心魅力&#xff0c;在于它构建起了一个全球开发者共同参与的超级协作网络。想象一下&#xff0c;来自世界各个角落的开发者、研究者&#xff0c;无论身处繁华都市还是偏远小镇&#xff0c;只要心怀对技术的热爱与追求&#xff0c;就能加入到这场技术狂欢中…

【每日一题丨2025年5.12~5.18】排序相关题

个人主页&#xff1a;Guiat 归属专栏&#xff1a;每日一题 文章目录 1. 【5.12】P1068 [NOIP 2009 普及组] 分数线划定2. 【5.13】P5143 攀爬者3. 【5.14】P12366 [蓝桥杯 2022 省 Python B] 数位排序4. 【5.15】P10901 [蓝桥杯 2024 省 C] 封闭图形个数5.【5.16】P12165 [蓝桥…

522UART是什么

UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff0c;通用异步收发传输器&#xff09;是一种常见的串行通信协议&#xff0c;用于设备间的低速数据传输。它采用异步通信方式&#xff0c;无需时钟信号同步&#xff0c;仅需两根数据线&#xff08;TX发送、R…