VC的另类数据库编程

QQ453845938

QQ453845938

2016-01-29 12:40

VC的另类数据库编程,VC的另类数据库编程
  一、 制作VB数据库访问ACTIVEX DLL

  1、首先使用VB6.0创建一个心得ACTIVEX DLL工程,将工程命名为prjado、将类命名为clsado。

  2、为工程添加ADO对象库的引用。工程->引用:Microsoft ActiveX Data Objects2.0 Library

  3、为类增加两个新的变量:

Dim con As New ADODB.Connection 定义ADO会话连接对象
Dim cmd As New ADODB.Command 定义ADO命令对象
  4、增加初始化函数

Public Function ado_Init()
 con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=True;Data Source=sms.mdb"
 cmd.ActiveConnection = con
End Function
  建立到数据源的物理连接

  指定Command对象当前所属的 Connection 对象。

  5、数据库操作函数

Public Function ado_add(ByVal strdata As String)
 cmd.CommandText = "insert into comdata (timm,datt) values (" + (Format(Date, "YYYY-MM-DD ")) + Str((Time)) + "," + (strdata) + ")"
 cmd.Execute
End Function
  将参数保存到SMS.MDB的COMDATA表中

  注意:函数声明时必须指定参数是传值(ByVal),否则VB默认为按地址传递(ByRef)

  6、连接关闭函数

Public Function ado_UnInit()
 con.Close
 Set cmd = Nothing
 Set con = Nothing
End Function
  关闭连接并且释放对象。

  保存工程,编译prjado.dll,这就是我们的服务组件,它完成了调用ADO对象实现对数据库操作的功能。

  二、在VC程序中调用服务组件

  1、运行VC 6.0,使用MFC程序向导创建一个新的基于对话框的MFC应用程序。

  2、使用#import导入服务组件,拷贝PRJADO.DLL到VC工程目录,打开STDAFX.H文件增加如下代码:

# import "prjado.dll"
using namespace prjado;
这段代码应该放置在
file://{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately 之后和#endif 之前。
  在stdafx.h文件导入dll能够让编译器在运行时连接dll的类型库,#import它能够自动产生一个对GUIDs的定义,同时自动生成对clsado对象的封装。同时能够列举它在类中所能找到的类型, VC++会在编译的时候自动生成两个文件:

  一个头文件(.tlh),它包含了列举的类型和对类型库中对象的定义;

  一个实现文件(.tli)对类型库对象模型中的方法产生封装。

  Namespace(名字空间)用来定义一个名字空间,使用unsing就可以将当前的类型上下文转换名字空间所定地,让我们可以访问服务组件的方法。

  如果我们修改了服务组件程序,建议删除这两个文件后重新完整编译工程,以便让编译器重新列举类的属性以及函数。

  3、在对话框中新添加一按钮,标题设为"测试"。双击"测试"按钮,系统提示新建一函数OnButton1对应于该按钮的CLICK事件。OnButton1函数的具体代码如下

HRESULT hresult;
CLSID clsid;
CoInitialize(NULL);
file://初始化COM接口
hresult=CLSIDFromProgID(OLESTR("prjado.clsado"), &clsid);
file://得到组件的CLSID
_clsado *t;
file://这就是我们在PRJADO.DLL中定义的类
hresult=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(_clsado),(LPVOID *) &t);
file://初始化CLSADO,CoCreateInstance()的第一个参数是对象的CLSID(类代码),这个128位的编码唯一地标识了组件服务,它的路径和运行参数等信息都放在系统注册表中;第二个参数一般情况下设为NULL;第三个参数用来指明对象的运行环境,如远程或本地,此处设为CLSCTX_INPROC_SERVER,标明是服务组件是一个DLL;第四个参数指明用来与对象通信接口的ID,这也是一个128位的编码;第五个参数是用来接收对象的接口指针。

if(FAILED(hresult))
{
AfxMessageBox("初始化服务组件失败");
return;
}
file://如果初始化失败,弹出提示对话框
展开更多 50%)
分享

猜你喜欢

VC的另类数据库编程

C语言教程 C语言函数
VC的另类数据库编程

jsp中的数据库编程

Web开发
jsp中的数据库编程

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

VC连接SQL SERVER数据库

编程语言 网络编程
VC连接SQL SERVER数据库

delphi编程数据库日期显示

编程语言 网络编程
delphi编程数据库日期显示

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

数据库开发之窗体编程

C语言教程 C语言函数
数据库开发之窗体编程

如何学好数据库编程?

编程语言 网络编程
如何学好数据库编程?

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

动态HTML教程(五)

动态HTML教程(五)

JSP由浅入深(5-2)

JSP由浅入深(5-2)
下拉加载更多内容 ↓