国产化软件和国产化芯片的窘境一样, 一方面市场已经存在性能优越的同类软件, 成本很低, 但小众的国产化软件不仅需要高价买入版权, 并且软件开发维护成本高; 另一方面, 国产软件目前普遍难用, 性能不稳定, Bug 满天飞, 虽然可以去迭代, 但是没有人愿意耐心地等国产软件迭代, 甚至市场的生态不给国产软件迭代的机会, 选择性忽视国产, 国内公司也不会给工程师去试错的机会, 这直接限制了中国软件的能力提升.
虽然国产软件处于劣势, 但是在涉及 GJ 安全的领域, 国产化一词是个香饽饽, 处于强势地位, 尤其是中兴事件以后, 国产化会慢慢推进. 我们是支持国产化的, 但是希望国产化软件能够主动创新, 不要活在 ZF 和 TZ 的庇护下, 永远长不大, 偏安一隅, 走不到市场去竞争.
国产数据库有达梦数据库, 人大金仓数据库, 本文主要讲述人大金仓数据库如何在 windows 7/10 操作系统上用 C# 编程语言通过 ODBC 接口访问, 来支持国产化.
人大金仓数据库介绍
北京人大金仓信息技术股份有限公司 (简称: 人大金仓) 是中国自主研发数据库产品和数据管理解决方案的领导企业, 由中国人民大学及一批最早在国内开展数据库教学, 研究与开发的专家于 1999 年发起创立, 至今已成功获得中国电子科技集团 (CETC) 旗下的普华基础软件股份有限公司和太极计算机股份有限公司的战略注资, 被纳入 CETC 集团的整体发展战略.
KingbaseES 是人大金仓面向事务处理类, 兼顾简单分析类应用的数据库产品, 可承载各行业管理信息系统和业务生产系统的相关业务, 可用于替代 Oracle 的大型通用关系型数据库.(官网介绍, 看看就好, 明白怎么回事)
因为人大金仓需要购买版权, 现在网络上流传着一个古老的版本 Kingbase ES V3.1, 自备激活码, 本文以此数据库为例, 讲述数据库开发流程.
ODBC 介绍
人大金仓数据库提供了基于开放数据库连接 (Open Database Connectivity, ODBC) 的接口, ODBC 为异构数据库访问提供统一接口, 允许应用程序以 SQL 为数据存取标准, 存取不同 DBMS 管理的数据, 使应用程序直接操纵 DB 中的数据, 免除随 DB 的改变而改变.
软件配置
在安装 Kingbase ES V3.1 时, 请一定按照步骤安装, 这个版本比较古老, 否则容易按照失败, 大概归纳为:
打开 setup 文件夹后, 运行 setup, 输入序列号, 安装完成后如下图所示:
安装完成后, 运行前, 在开始菜单打开数据库初始化工具来初始化
运行交互查询工具, 其中的用户名是 SYSTEM, 密码是 MANAGER
如果提示连接服务器启动失败, 查看数据库服务管理器是否启动, 启动失败是无法运行交互查询工具的, 如下图所示:
总之, 数据库安装成功并建表后, 如下图所示, 其中 PUBLIC.MEMBERDB 是本文根据演示需要建的表, 储存用户信息.
创建 ODBC
安装成功后, 查看C:\Windows\SysWOW64\kodbc.dll 是否存在, 这是 Kingbase 和 ODBC 连接的驱动库.
因为数据库软件是 32 位的, 在控制面板的管理工具中, 打开 ODBC 数据源(32 位), 点击用户 DSN 中的添加, 查看是否存在 Kingbase ODBC driver, 如果不存在的话, 可以运行: C:\Windows\SysWOW64\odbcad32.exe, 步骤和上面一样.
ODBC 创建的具体步骤可以参考 C# 编程之 ODBC 连接数据库数据源 https://jingyan.baidu.com/article/4e5b3e192c32e491911e2456.html .ODBC 创建成功后, 可以点击测试连接, 会提示连接成功, 如下图所示.
C# 开发
本文提供了一个通过 ODBC 接口对 Kingbase 进行增删查改的类, 在 Win7/Win 10 测试中均正常. 源代码及数据库下载 https://download.csdn.net/download/wylloong/10484037
在运行本文的示例程序中, 注意首先建表和实现 ODBC 连接, 然后修改连接数据库的字符串, conStr = "Driver={Kingbase ODBC Driver};Server=W;Uid=SYSTEM;Pwd=MANAGER;Database=TEST;";
此外, Kingbased 的交互查询工具中, 右键点击表有 "脚本化到窗口", 可以生产数据库操作的 SQL 语句, 方便数据库的开发. 比如 "SELECT"ID","NAME","PASSWORD","MAN","LEVEL","ADDTIME"FROM"PUBLIC"."MEMBERDB";"
来源: https://www.cnblogs.com/DHUtoBUAA/p/9194139.html