介绍
基于 odbc 实现 database 包。
特性
-
🚀 特性1
数据库驱动接口
-
🚀 特性2
数据源接口
-
💪 特性3
数据库连接接口
-
🛠️ 特性4
sql语句预执行接口
-
🌍 特性5
执行Insert、Update、Delete语句产生的结果接口
-
💡 特性6
执行Select/Query语句返回结果的列信息
-
💡 特性7
执行 Select 语句产生的结果接口
-
💡 特性8
数据库事务的核心行为
软件架构
源码目录
.
├─ doc
├─ README.md
├─ README.OpenSource
├─ src
└─ test
├─ HLT
└─ LLT
doc
文档目录,用于存放设计、API接口等文档src
源码目录test
测试目录
接口说明
主要类和函数接口说明详见 API
使用说明
编译构建
1、安装
linux安装 unixODBC
https://learn.microsoft.com/zh-cn/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16&tabs=alpine18-install%2Calpine17-install%2Cdebian8-install%2Credhat7-13-install%2Crhel7-offline
window安装
https://learn.microsoft.com/zh-cn/sql/connect/odbc/windows/microsoft-odbc-driver-for-sql-server-on-windows?view=sql-server-ver16
2、克隆项目
git clone https://gitcode.com/Cangjie-TPC/odbc4cj.git
3、切换目录
cd odbc4cj
4、在当前目录新建 lib 文件夹
5、迁移lib
linux 环境下 将 libodbc.so复制到lib中。libodbc.so通常在 /usr/lib/x86_64-linux-gnu/ 目录下
window 环境下 将 libmyodbc8a.dll、libcrypto-1_1-x64.dll、libsasl.dll、libssl-1_1-x64.dll复制到lib中。将 cjpm.toml文件中的 odbc = {path = “./lib/”} 改成 myodbc8a = {path = “./lib/”}。libmyodbc8a.dll 下载mysql版本的odbc插件目录中,libcrypto-1_1-x64.dll、libsasl.dll、libssl-1_1-x64.dll在window系统目录中
6、编译项目
cjpm build
7、编译示例文件
示例文件在 /test/DOC/test_example1.cj
${path}修改成用户自己项目本地路径
linux 编译指令
cp ${path}/libs/libodbc.so ${path}/odbc4cj/target/release/odbc4cj ---> 复制so到指定路径
cd target/release/odbc4cj ---> 切换目录
cjc --import-path ${path}/odbc4cj/target/release -L ${path}/odbc4cj/target/release/odbc4cj -l odbc -l odbc4cj ${path}/odbc4cj/test/DOC/test_example1.cj -O0 -Woff alll ---> 编译 test/LLT 用例
windows 编译指令
cp ${path}/libs/libmyodbc8a.dll ${path}/odbc4cj/target/release/odbc4cj ---> 复制dll到指定路径
cp ${path}/libs/libcrypto-1_1-x64.dll ${path}/odbc4cj/target/release/odbc4cj ---> 复制dll到指定路径
cp ${path}/libs/libsasl.dll ${path}/odbc4cj/target/release/odbc4cj ---> 复制dll到指定路径
cp ${path}/libs/libssl-1_1-x64.dll ${path}/odbc4cj/target/release/odbc4cj ---> 复制dll到指定路径
cd target/release/odbc4cj ---> 切换目录
cjc --import-path ${path}/odbc4cj/target/release -L ${path}/odbc4cj/target/release/odbc4cj -l crypto-1_1-x64 -l myodbc8a -l sasl -l ssl-1_1-x64 -l odbc4cj ${path}/odbc4cj/test/DOC/test_example1.cj -O0 -Woff alll ---> 编译 test/LLT 用例
8、运行执行文件
linux 运行
./main
windows 运行
./main.exe
功能示例
import std.database.sql.*
import std.io.*
import std.time.*
import std.regex.*
import odbc4cj.*
main() {
var driver = OdbcDriver()
var database = driver.open("DATABASE=mysql;UID=root;PWD=123")
var conn = database.connect()
var prepareStatement = conn.prepareStatement("drop table if exists test")
var rowCount = prepareStatement.update()
prepareStatement = conn.prepareStatement("create table test(data int NOT NULL, datanull int)")
rowCount = prepareStatement.update()
prepareStatement = conn.prepareStatement("insert into test values(?,?)")
rowCount = prepareStatement.update([SqlInteger(12345), SqlNullableInteger(None)])
prepareStatement = conn.prepareStatement("select * from test")
var queryResult = prepareStatement.query()
var arr: Array<SqlDbType> = [SqlInteger(1), SqlNullableInteger(1)]
queryResult.next(arr)
match (arr[0]) {
case v: SqlInteger => println(v.value)
case _ => ()
}
match (arr[1]) {
case v: SqlNullableInteger => println(v.value)
case _ => ()
}
}
执行结果如下:
12345
None
约束与限制
- 不支持数据类型(SqlTimeTz、SqlTimestamp、SqlInterval),新增支持数据类型请参考 sqlTypeExtend.cj
- interface Driver 不支持 name、version、preferredPooling
- Datasource 不支持 setOption(key: String, value: String),请使用 setOption(key: Int32, value: Int64)
- interface Connection 不支持 getMetaData(),请使用 getInfo(infoType: UInt16, len: Int16)
- interface Statement 不支持 setOption(key: String, value: String),请使用 setOption(key: Int32, value: Int64)
- interface UpdateResult 不支持 lastInsertId
- interface Transaction 不支持 accessMode、deferrableMode、save(savePointName: String)、rollback(savepointName: String)、release(savePointName: String)
总是有很多小伙伴反馈说:鸿蒙开发不知道学习哪些技术?不知道需要重点掌握哪些鸿蒙应用开发知识点? 为了解决大家这些学习烦恼。在这准备了一份很实用的鸿蒙(HarmonyOS NEXT)学习路线与学习文档给大家用来跟着学习。
针对一些列因素,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线,包含了鸿蒙开发必掌握的核心知识要点,内容有(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、WebGL、元服务、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony驱动开发、系统定制移植等等)鸿蒙(HarmonyOS NEXT)技术知识点。
本路线共分为四个阶段:
第一阶段:鸿蒙初中级开发必备技能
第二阶段:鸿蒙南北双向高工技能基础:gitee.com/MNxiaona/733GH
第三阶段:应用开发中高级就业技术
第四阶段:全网首发-工业级南向设备开发就业技术:gitee.com/MNxiaona/733GH
《鸿蒙 (Harmony OS)开发学习手册》(共计892页)
如何快速入门?
1.基本概念
2.构建第一个ArkTS应用
3.……
开发基础知识:gitee.com/MNxiaona/733GH
1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……
基于ArkTS 开发
1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……
鸿蒙开发面试真题(含参考答案):gitee.com/MNxiaona/733GH
OpenHarmony 开发环境搭建
《OpenHarmony源码解析》:gitee.com/MNxiaona/733GH
搭建开发环境
系统架构分析
- 构建子系统
- 启动流程
- 子系统
- 分布式任务调度子系统
- 分布式通信子系统
- 驱动子系统
- ……
OpenHarmony 设备开发学习手册
项目实战开发教学:gitee.com/MNxiaona/733GH
写在最后
- 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
- 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
- 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
- 想要获取更多完整鸿蒙最新学习资源,请移步前往小编:
gitee.com/MNxiaona/733GH