关键字:人大金仓、KingbaseES、c#、vb
- 概述
开放式数据库连接(ODBC)是一种广泛接受的应用程序编程接口(API),适用于数据库访问。它基于Call-Level接口(CLI)开放式组和ISO/IEC的数据库API规范,并使用结构化查询语言(SQL)作为其数据库访问语言。上述特性,使得ODBC在被众多开发语言封装调用,如:PYTHON、C#、VB、DEPHINE、QT、PB等。对于在Windows操作系统中,默认为已经注册了KingbaseES的ODBC的驱动并且已经设置了正确的数据源。而对于在Linux操作系统中,默认已经配置成功odbc.ini与odbcinst.ini文件。
对于使用C#调用ODBC驱动的过程中,开发平台选用visual studio 2013。
在VS中,可以通过“服务器资源管理器”,具体配置步骤如下。
- 打开 “服务器资源管理器”->“数据连接”->“添加连接”
- 选择数据源,“Microsoft ODBC 数据源”
- 填写配置参数
- 操作数据库,找到所需要操作的表后“新建查询”即可
若是在第3步中出现如下错误:
出现该错误的可能情况为,所安装的ODBC驱动的架构与操作系统的架构不匹配,如操作系统为x64位的Windows,而安装的ODBC的驱动为32位,此时便会出现上述错误。
解决办法为卸载错误安装的ODBC驱动后重新安装。
在C#中调用ODBC会使用到的命名空间“System.Data.Odbc”,在该空间中提供了操作数据库的类如:OdbcConnection(用于与数据库端建立连接)、OdbcCommand(对数据源要执行的SQL语句或存储过程)、OdbcDataAdapter(用于填充DataSet和更新数据源的一组数据命令和一个数据连接)以及OdbcDataReader(从数据源中获取数据)。下述示例中将使用上述类操作数据库,首先会创建一个表“a1”,而后向表中插入一条数据,并查询表中数据,最后再将表删除。
代码示例如下:
//引入命名空间
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Odbc;
using System.Data;
namespace net_use_odbc
{
class Program
{
//构造连接字符串
public static string connString1 = "Dsn=kingbase;Uid=system;Pwd=123";
//创建表并插入数据
static void Create_and_Insert()
{
using (OdbcConnection con = new OdbcConnection(connString1))
{
con.Open();
using (OdbcCommand cmd = new OdbcCommand("create table a1(id int, data text)", con))
{
cmd.ExecuteNonQuery();
cmd.CommandText = "insert into a1 values(1, 'testdata')";
cmd.ExecuteNonQuery();
}
con.Close();
}
}
//查询表中的数据
static DataTable SqlExeQuery_datatable()
{
using (OdbcConnection con = new OdbcConnection(connString1))
{
using (OdbcCommand cmd = new OdbcCommand("select * from a1", con))
{
using (OdbcDataAdapter da = new OdbcDataAdapter(cmd))
{
DataTable dt = new DataTable();
con.Open();
da.Fill(dt);
return dt;
}
}
con.Close();
} }
//显示查询得到的数据
static void Print_datatable()
{
DataTable dt = SqlExeQuery_datatable();
String strColumn = "";
String strData = "";
foreach (DataColumn column in dt.Columns)
{
strColumn += column.ColumnName;
strColumn += " ";
}
Console.WriteLine(strColumn);
foreach (DataRow index in dt.Rows)
{
strData = "";
foreach (DataColumn column in dt.Columns)
{
strData += index[column.ColumnName];
strData += " ";
}
Console.WriteLine(strData);
}}
//删除创建的表
static void Drop_datatable()
{
using (OdbcConnection con = new OdbcConnection(connString1))
{
con.Open();
using (OdbcCommand cmd = new OdbcCommand("drop table a1", con))
{
cmd.ExecuteNonQuery();
}
con.Close();
}
}
static void Main(string[] args)
{
Create_and_Insert();
Print_datatable();
Console.ReadLine();
Drop_datatable();
}
}
}
选用visual studio 2013作为开发平台,在VB中调用ODBC驱动操作数据库需要使用到ADODB的扩展,扩展的添加方式如下:
在项目上右击,找到“添加-引用”后(如下), 即可打开“应用管理器”。
下图中为打开的“应用管理器”选择“扩展”选项后便可看到“ADODB”,选择任意一个后点击“确定”按钮即可。
ADODB的扩展添加完成后便可开始进行应用程序的开发,ADO中共有7个对象,连接对象(Connection)、命令对象(Command)、记录集对象(Recordset)、字段对象(Field)、参数对象(Parameter)、错误对象(Error)以及属性对象(Property)。下述示例便是通过使用这7个对象进行数据库的操作。示例在创建表后向其插入一条数据,并对表中的数据进行查询与显示,之后对更新表中数据并再一次的查询与显示,在删除表后断开连接并释放空间。
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cmd As New ADODB.Command
'建立与数据库的连接
cn.Open("DSN=kingbase8;" & _
"UID=hwj;" & _
"PWD=123;" & _
"Database=hwjbase")
cn.Execute("DROP TABLE if exists a1;")
'创建表“a1”
cn.Execute("create table a1(id int, data text);")
'向表中插入数据
cn.Execute("insert into a1 values(1,'datatest');")
'查询并获取结果集
rs.Open("SELECT id, data FROM a1;", cn)
'显示结果集
MsgBox(rs.Fields("id").Value & vbTab & rs.Fields("data").Value)
'更新数据
cmd.ActiveConnection = cn
cmd.CommandText = "update a1 set data='testdata' where id = 1"
cmd.Execute()
'重新查询结果并显示
rs.Requery()
MsgBox(rs.Fields("id").Value & vbTab & rs.Fields("data").Value)
'删除表
cn.Execute("drop table a1;")
'关闭并清空内存
rs.Close()
rs = Nothing
cn.Close()
cn = Nothing