介绍
基于 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)全栈开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页)+《OpenHarmony 嵌入式开发学习手册》,希望对大家有所帮助:https://qr21.cn/FV7h05
《鸿蒙开发学习手册》:
如何快速入门:https://qr21.cn/FV7h05
- 基本概念
- 构建第一个ArkTS应用
- ……
开发基础知识:https://qr21.cn/FV7h05
- 应用基础知识
- 配置文件
- 应用数据管理
- 应用安全管理
- 应用隐私保护
- 三方应用调用管控机制
- 资源分类与访问
- 学习ArkTS语言
- ……
基于ArkTS 开发:https://qr21.cn/FV7h05
- Ability开发
- UI开发
- 公共事件与通知
- 窗口管理
- 媒体
- 安全
- 网络与链接
- 电话服务
- 数据管理
- 后台任务(Background Task)管理
- 设备管理
- 设备使用信息统计
- DFX
- 国际化开发
- 折叠屏系列
- ……
鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH
鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH
1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向