feat(db): 添加对达梦数据库的支持

- 在应用程序中新增对达梦数据库(DM)的配置和连接支持
- 实现 SetDmDB 函数以配置达梦数据库连接
- 更新数据库操作逻辑,支持达梦特有的 SQL 语法和功能
- 在相关文件中添加达梦数据库的处理逻辑,包括表创建、数据插入和查询
- 更新 go.mod 和 go.sum 文件以引入达梦数据库驱动
- 增强文档,详细说明达梦数据库的配置和使用方法
This commit is contained in:
2026-03-20 10:46:51 +08:00
parent 1546967918
commit 7f7b585ffb
194 changed files with 211502 additions and 2328 deletions
+48
View File
@@ -0,0 +1,48 @@
/*
* Copyright (c) 2000-2018, 达梦数据库有限公司.
* All rights reserved.
*/
package i18n
import (
"encoding/json"
"golang.org/x/text/language"
"golang.org/x/text/message"
)
type msg struct {
Id string `json:"id"`
Translation string `json:"translation,omitempty"`
}
type i18n struct {
Language string `json:"language"`
Messages []msg `json:"messages"`
}
func InitConfig(jsonStr string) {
var i18n i18n
json.Unmarshal([]byte(jsonStr), &i18n)
msaArry := i18n.Messages
tag := language.MustParse(i18n.Language)
for _, e := range msaArry {
message.SetString(tag, e.Id, e.Translation)
}
}
func Get(key string, locale int) string {
var p *message.Printer
switch locale {
case 0:
p = message.NewPrinter(language.SimplifiedChinese)
case 1:
p = message.NewPrinter(language.AmericanEnglish)
case 2:
p = message.NewPrinter(language.TraditionalChinese)
}
return p.Sprintf(key)
}
+248
View File
@@ -0,0 +1,248 @@
/*
* Copyright (c) 2000-2018, 达梦数据库有限公司.
* All rights reserved.
*/
package i18n
const Messages_en_US = `{
"language": "en-US",
"messages": [
{
"id": "error.dsn.invalidSchema",
"translation": "DSN must start with dm://"
},
{
"id": "error.dsn.invalidFormat",
"translation": "DSN is invalid"
},
{
"id": "error.unsupported.scan",
"translation": "Unsupported scan type"
},
{
"id": "error.invalidParameterNumber",
"translation": "Invalid parameter number"
},
{
"id": "error.initThirdPartCipherFailed",
"translation": "Init third part cipher failed"
},
{
"id": "error.connectionSwitchFailed",
"translation": "Connection switch failed"
},
{
"id": "error.connectionSwitched",
"translation": "Connection has been switched"
},
{
"id": "error.invalidServerMode",
"translation": "Invalid server mode"
},
{
"id": "error.osauthError",
"translation": "At the same time using the specifed user login and OS authentication login, please determine a way."
},
{
"id": "error.notQuerySQL",
"translation": "The SQL is not a query SQL"
},
{
"id": "error.notExecSQL",
"translation": "The SQL is not a execute SQL"
},
{
"id": "error.invalidTranIsolation",
"translation": "invalid Transaltion Isolation"
},
{
"id": "errorCommitInAutoCommitMode",
"translation": "Can't commit in Auto commit status"
},
{
"id": "errorCommitInAutoCommitMode",
"translation": "Can't rollback in Auto commit status"
},
{
"id": "errorStatementHandleClosed",
"translation": "Statement handle is closed"
},
{
"id": "errorResultSetColsed",
"translation": "Resultset is closed"
},
{
"id": "error.communicationError",
"translation": "Communication error"
},
{
"id": "error.msgCheckError",
"translation": "Message check error"
},
{
"id": "error.unkownNetWork",
"translation": "Unkown net work"
},
{
"id": "error.serverVersion",
"translation": "Server version is too low"
},
{
"id": "error.usernameTooLong",
"translation": "Username is too long."
},
{
"id": "error.passwordTooLong",
"translation": "Password to login is too long."
},
{
"id": "error.dataTooLong",
"translation": "The data is too large to support."
},
{
"id": "error.invalidColumnType",
"translation": "Invalid column type"
},
{
"id": "error.dataConvertionError",
"translation": "Data convertion error"
},
{
"id": "error.invalidConn",
"translation": "Invalid connection"
},
{
"id": "error.invalidHex",
"translation": "Invalid Hex Number."
},
{
"id": "error.invalidBFile",
"translation": "Invalid BFile format string."
},
{
"id": "error.dataOverflow",
"translation": "Digital overflow"
},
{
"id": "error.invalidDateTimeFormat",
"translation": "Invalid datetime type format"
},
{
"id": "error.datetimeOverflow",
"translation": "Digital overflow"
},
{
"id": "error.invalidTimeInterval",
"translation": "Invalid time interval type value"
},
{
"id": "error.unsupportedInparamType",
"translation": "Unsupported input parameter type"
},
{
"id": "error.unsupportedOutparamType",
"translation": "Unsupported output parameter type"
},
{
"id": "error.unsupportedType",
"translation": "Not support this type"
},
{
"id": "error.invalidObjBlob",
"translation": "invalid Object Blob Data."
},
{
"id": "error.structMemNotMatch",
"translation": "Members are not matched in Record or Class"
},
{
"id": "error.invalidComplexTypeName",
"translation": "Invalid descriptor name."
},
{
"id": "error.invalidParamterValue",
"translation": "Invalid parameter value"
},
{
"id": "error.invalidArrayLen",
"translation": "the length of static array is bigger than the one when defined."
},
{
"id": "error.invalidSequenceNumber",
"translation": "Invalid sequence no"
},
{
"id": "error.resultsetInReadOnlyStatus",
"translation": "Resultset in readonly status"
},
{
"id": "error.SSLInitFailed",
"translation": "Failed to initialize SSL"
},
{
"id": "error.LobDataHasFreed",
"translation": "Lob Data has been freed"
},
{
"id": "error.fatalError",
"translation": "Fatal error"
},
{
"id": "error.invalidLenOrOffset",
"translation": "Invalid length or offset"
},
{
"id": "error.intervalValueOverflow",
"translation": "interval type value overflow"
},
{
"id": "error.invalidCipher",
"translation": "Invalid cipher type"
},
{
"id": "error.storeInNilPointer",
"translation": "Can't store value into a nil pointer"
},
{
"id": "error.batchError",
"translation": "Error in executing with batch"
},
{
"id": "warning.bpWithErr",
"translation": "Warning:Partial failure on execute with batch"
},
{
"id": "error.invalidSqlType",
"translation": "Invalid sql type"
},
{
"id": "error.invalidDateTimeValue",
"translation": "Invalid datetime value"
},
{
"id": "error.msgTooLong",
"translation": "Message too long, limit 512M"
},
{
"id": "error.isNull",
"translation": "Data is NULL"
},
{
"id": "error.ParamCountLimit",
"translation": "Parameter count limit is 65536."
},
{
"id": "error.unbindedParameter",
"translation": "Unbound parameter"
},
{
"id": "error.stringCut",
"translation": "The string is cut"
},
{
"id": "error.connectionClosedOrNotBuild",
"translation": "Connection is colsed or not build"
}
]
}`
+248
View File
@@ -0,0 +1,248 @@
/*
* Copyright (c) 2000-2018, 达梦数据库有限公司.
* All rights reserved.
*/
package i18n
const Messages_zh_CN = `{
"language": "zh-Hans",
"messages": [
{
"id": "error.dsn.invalidSchema",
"translation": "DSN串必须以dm://开头"
},
{
"id": "error.dsn.invalidFormat",
"translation": "DSN串格式不正确"
},
{
"id": "error.unsupported.scan",
"translation": "Scan类型转换出错"
},
{
"id": "error.invalidParameterNumber",
"translation": "参数个数不匹配"
},
{
"id": "error.initThirdPartCipherFailed",
"translation": "第三方加密初始化失败"
},
{
"id": "error.connectionSwitchFailed",
"translation": "连接重置失败"
},
{
"id": "error.connectionSwitched",
"translation": "连接已重置"
},
{
"id": "error.invalidServerMode",
"translation": "服务器模式不匹配"
},
{
"id": "error.osauthError",
"translation": "同时使用了指定用户登录和OS认证登录, 请确定一种方式."
},
{
"id": "error.notQuerySQL",
"translation": "非查询SQL语句"
},
{
"id": "error.notExecSQL",
"translation": "非执行SQL语句"
},
{
"id": "error.invalidTranIsolation",
"translation": "非法的事务隔离级"
},
{
"id": "errorCommitInAutoCommitMode",
"translation": "自动提交模式下不能手动提交"
},
{
"id": "errorRollbackInAutoCommitMode",
"translation": "自动提交模式下不能手动回滚"
},
{
"id": "errorStatementHandleClosed",
"translation": "语句已经关闭"
},
{
"id": "errorResultSetColsed",
"translation": "结果集已经关闭"
},
{
"id": "error.communicationError",
"translation": "网络通信异常"
},
{
"id": "error.msgCheckError",
"translation": "消息校验异常"
},
{
"id": "error.unkownNetWork",
"translation": "未知的网络"
},
{
"id": "error.serverVersion",
"translation": "服务器版本太低"
},
{
"id": "error.usernameTooLong",
"translation": "用户名超长"
},
{
"id": "error.passwordTooLong",
"translation": "密码超长"
},
{
"id": "error.dataTooLong",
"translation": "数据大小已超过可支持范围"
},
{
"id": "error.invalidColumnType",
"translation": "无效的列类型"
},
{
"id": "error.dataConvertionError",
"translation": "类型转换异常"
},
{
"id": "error.invalidConn",
"translation": "连接失效"
},
{
"id": "error.invalidHex",
"translation": "无效的十六进制数字"
},
{
"id": "error.invalidBFile",
"translation": "无效的BFile格式串"
},
{
"id": "error.dataOverflow",
"translation": "数字溢出"
},
{
"id": "error.invalidDateTimeFormat",
"translation": "错误的日期时间类型格式"
},
{
"id": "error.datetimeOverflow",
"translation": "数字溢出"
},
{
"id": "error.invalidTimeInterval",
"translation": "错误的时间间隔类型数据"
},
{
"id": "error.unsupportedInparamType",
"translation": "输入参数类型不支持"
},
{
"id": "error.unsupportedOutparamType",
"translation": "输出参数类型不支持"
},
{
"id": "error.unsupportedType",
"translation": "不支持该数据类型"
},
{
"id": "error.invalidObjBlob",
"translation": "无效的对象BLOB数据"
},
{
"id": "error.structMemNotMatch",
"translation": "记录或类数据成员不匹配"
},
{
"id": "error.invalidComplexTypeName",
"translation": "无效的类型描述名称"
},
{
"id": "error.invalidParamterValue",
"translation": "无效的参数值"
},
{
"id": "error.invalidArrayLen",
"translation": "静态数组长度大于定义时长度"
},
{
"id": "error.invalidSequenceNumber",
"translation": "无效的列序号"
},
{
"id": "error.resultsetInReadOnlyStatus",
"translation": "结果集处于只读状态"
},
{
"id": "error.SSLInitFailed",
"translation": "初始化SSL环境失败"
},
{
"id": "error.LobDataHasFreed",
"translation": "LOB数据已经被释放"
},
{
"id": "error.fatalError",
"translation": "致命错误"
},
{
"id": "error.invalidLenOrOffset",
"translation": "长度或偏移错误"
},
{
"id": "error.intervalValueOverflow",
"translation": "时间间隔类型数据溢出"
},
{
"id": "error.invalidCipher",
"translation": "不支持的加密类型"
},
{
"id": "error.storeInNilPointer",
"translation": "无法将数据存入空指针"
},
{
"id": "error.batchError",
"translation": "批量执行出错"
},
{
"id": "warning.bpWithErr",
"translation": "警告:批量执行部分行产生错误"
},
{
"id": "error.invalidSqlType",
"translation": "非法的SQL语句类型"
},
{
"id": "error.invalidDateTimeValue",
"translation": "无效的日期时间类型值"
},
{
"id": "error.msgTooLong",
"translation": "消息长度超出限制512M"
},
{
"id": "error.isNull",
"translation": "数据为NULL"
},
{
"id": "error.ParamCountLimit",
"translation": "参数个数超过最大值65536."
},
{
"id": "error.unbindedParameter",
"translation": "有参数未绑定"
},
{
"id": "error.stringCut",
"translation": "字符串截断"
},
{
"id": "error.connectionClosedOrNotBuild",
"translation": "连接尚未建立或已经关闭"
}
]
}`
+248
View File
@@ -0,0 +1,248 @@
/*
* Copyright (c) 2000-2018, 达梦数据库有限公司.
* All rights reserved.
*/
package i18n
const Messages_zh_HK = `{
"language": "zh-Hant",
"messages": [
{
"id": "error.dsn.invalidSchema",
"translation": "DSN串必須以dm://開頭"
},
{
"id": "error.dsn.invalidFormat",
"translation": "DSN串格式不正確"
},
{
"id": "error.unsupported.scan",
"translation": "Scan類型轉換出錯"
},
{
"id": "error.invalidParameterNumber",
"translation": "參數個數不匹配"
},
{
"id": "error.initThirdPartCipherFailed",
"translation": "第三方加密初始化失敗"
},
{
"id": "error.connectionSwitchFailed",
"translation": "連接重置失敗"
},
{
"id": "error.connectionSwitched",
"translation": "連接已重置"
},
{
"id": "error.invalidServerMode",
"translation": "服務器模式不匹配"
},
{
"id": "error.osauthError",
"translation": "同時使用了指定用戶登錄和OS認證登錄, 請確定一種方式."
},
{
"id": "error.notQuerySQL",
"translation": "非查詢SQL語句"
},
{
"id": "error.notExecSQL",
"translation": "非執行SQL語句"
},
{
"id": "error.invalidTranIsolation",
"translation": "非法的事務隔離級"
},
{
"id": "errorCommitInAutoCommitMode",
"translation": "自動提交模式下不能手動提交"
},
{
"id": "errorRollbackInAutoCommitMode",
"translation": "自動提交模式下不能手動回滾"
},
{
"id": "errorStatementHandleClosed",
"translation": "語句已經關閉"
},
{
"id": "errorResultSetColsed",
"translation": "結果集已經關閉"
},
{
"id": "error.communicationError",
"translation": "網絡通信異常"
},
{
"id": "error.msgCheckError",
"translation": "消息校驗異常"
},
{
"id": "error.unkownNetWork",
"translation": "未知的網絡"
},
{
"id": "error.serverVersion",
"translation": "服務器版本太低"
},
{
"id": "error.usernameTooLong",
"translation": "用戶名超長"
},
{
"id": "error.passwordTooLong",
"translation": "密碼超長"
},
{
"id": "error.dataTooLong",
"translation": "數據大小已超過可支持範圍"
},
{
"id": "error.invalidColumnType",
"translation": "無效的列類型"
},
{
"id": "error.dataConvertionError",
"translation": "類型轉換異常"
},
{
"id": "error.invalidConn",
"translation": "連接失效"
},
{
"id": "error.invalidHex",
"translation": "無效的十六進制数字"
},
{
"id": "error.invalidBFile",
"translation": "無效的BFile格式串"
},
{
"id": "error.dataOverflow",
"translation": "数字溢出"
},
{
"id": "error.invalidDateTimeFormat",
"translation": "錯誤的日期時間類型格式"
},
{
"id": "error.datetimeOverflow",
"translation": "数字溢出"
},
{
"id": "error.invalidTimeInterval",
"translation": "錯誤的時間間隔類型數據"
},
{
"id": "error.unsupportedInparamType",
"translation": "輸入參數類型不支持"
},
{
"id": "error.unsupportedOutparamType",
"translation": "輸出參數類型不支持"
},
{
"id": "error.unsupportedType",
"translation": "不支持該數據類型"
},
{
"id": "error.invalidObjBlob",
"translation": "無效的對象BLOB數據"
},
{
"id": "error.structMemNotMatch",
"translation": "記錄或類數據成員不匹配"
},
{
"id": "error.invalidComplexTypeName",
"translation": "無效的類型描述名稱"
},
{
"id": "error.invalidParamterValue",
"translation": "無效的參數值"
},
{
"id": "error.invalidArrayLen",
"translation": "靜態數組長度大於定義時長度"
},
{
"id": "error.invalidSequenceNumber",
"translation": "無效的列序號"
},
{
"id": "error.resultsetInReadOnlyStatus",
"translation": "結果集處於只讀狀態"
},
{
"id": "error.SSLInitFailed",
"translation": "初始化SSL環境失敗"
},
{
"id": "error.LobDataHasFreed",
"translation": "LOB數據已經被釋放"
},
{
"id": "error.fatalError",
"translation": "致命錯誤"
},
{
"id": "error.invalidLenOrOffset",
"translation": "長度或偏移錯誤"
},
{
"id": "error.intervalValueOverflow",
"translation": "時間間隔類型數據溢出"
},
{
"id": "error.invalidCipher",
"translation": "不支持的加密類型"
},
{
"id": "error.storeInNilPointer",
"translation": "無法將數據存入空指針"
},
{
"id": "error.batchError",
"translation": "批量執行出錯"
},
{
"id": "warning.bpWithErr",
"translation": "警告:批量執行部分行產生錯誤"
},
{
"id": "error.invalidSqlType",
"translation": "非法的SQL語句類型"
},
{
"id": "error.invalidDateTimeValue",
"translation": "無效的日期時間類型值"
},
{
"id": "error.msgTooLong",
"translation": "消息長度超出限制512M"
},
{
"id": "error.isNull",
"translation": "數據為NULL"
},
{
"id": "error.ParamCountLimit",
"translation": "參數個數超過最大值65536."
},
{
"id": "error.unbindedParameter",
"translation": "有參數未綁定"
},
{
"id": "error.stringCut",
"translation": "字符串截斷"
},
{
"id": "error.connectionClosedOrNotBuild",
"translation": "連接尚未建立或已經關閉"
}
]
}`