[发明专利]VB快速访问SQL数据库的方法在审

专利信息
申请号: 201310594905.1 申请日: 2013-11-25
公开(公告)号: CN103646047A 公开(公告)日: 2014-03-19
发明(设计)人: 刘雨 申请(专利权)人: 大连海联自动控制有限公司
主分类号: G06F17/30 分类号: G06F17/30
代理公司: 暂无信息 代理人: 暂无信息
地址: 116000 辽宁*** 国省代码: 辽宁;21
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明为VB快速访问SQL数据库的方法,针对使用VB访问SQL数据库这一具体问题,在VB应用程序中调用ODBCAPI函数,进行数据成组绑定,减少应用程序访闷SQL数据库时数据转换的系统开销和网络传输开销,使应用程序高速访问SQL数据库。
搜索关键词: vb 快速 访问 sql 数据库 方法
【主权项】:
由于ODBC API函数的入口参数表中有些参数需要传递指针,而VB不支持指针,因此在VB中调用ODBC API函数受到一定限制;VB的字符串内存存储格式与C语言不同,而ODBC API函数是用C语言开发的,这也限制了VB和ODBC API函数之间的数据交换;作者对ODBC API函数进行了分析,综合VB的特点,编写一个动态链接库,在动态链接库的支持下可直接在VB中调用ODBC API函数,并能进行数据交换;VC++6.0开发动态链接库VC++6.0可开发三种类型的动态链接库:Win32 DLL、常规MFC DLL、扩展MFC DLL;扩展MFC DLL支持C++接口;换言之,DLL能够导出整个类,客户能够建立这些类或由其派生的类的对象;Win32DLL、常规MFC DLL可被任意Win32编程环境(包括Visual Basic 6.0版)加载使用;常规MFC DLL在发行时必须附带MFC42.DLL库,而Win32DLL可单独发行;如果只提供给VB编程环境使用,可建立Win32 DLL即可;建立Win32 DLL利用VC++6.0编程环境的AppWizard创建一个简单Win32 DLL工程,工程名为VBSQL,在此基础上加入自己的代码;代码如下:#include“stdafx.h”#include#define DLLEXPORT extern“C”_declspec(dllexport)//定义导出宏BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved){    switch(ul_reason_for_call)     {case DLL_PROCESS_ATTACH:case DLL_THREAD_ATTACH:case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH:break;}     return TURE;}DLLEXPORT long_stdcall GetAddress(void*Address)//按地址传送{  return(long)Address};//将地址强制转换为长整形DLLEXPORT long_stdcall strCopyToByte(char*BytesAddress, char*strAddress){   return(long)strcpy(BytesAddress, strAddress)};//将字符串传送到指定地址经编译链接生成VBSQLDLL动态链接库,将其拷贝到C:\WINDOWS\SYSTEM目录下,这样就可在VB中调用;利用Microsoft Visual Studio 6.0 工具软件Depends查看VBSQLDLL中导出的函数名;VB中声明外部函数在模块文件中作如下声明:VBSQL.DLL函数声明:Public Declare GetAddress Lib“VBSQL.DLL” Alias “_GetAddress@4” (ByRefAddress as Any) as LongPublic Declare strCopyToByte Lib“VBSQL.DLL” Alias “_strCopyToByte@8” (ByRefByte ArrayAdd ress as Any) as Long参考sql.h,sqltypes.h头文件中常量和函数声明,将其内容转为VB声明格式;由于ODBCAPI函数和常数较多,在此不能一一列举;类型标识常量:Public Const SQL_IS_POINTER=(‑4)Public Const SQL_IS_UINTEGER=(‑5)SQL数据类型常量Public Const SQL_CHAR=1Public Const SQL_FLOAT=6SQL C类型常量Public Const SQL_C_CHAR=SQL_CHARPublic Const SQL_C_FLOAT=SQL_REAL函数声明Public Declare Function SQLSetStrntAttr Lib“odbe32.dll”(ByVal StatementHandle As Long, ByVal Attributes As Long, ByVal ValuePtr As Long. ByVal StringLength As Long)As IntegerPublic Declare Function SQLBindParame Lib“odbe32.dll”(ByVal StatementHandle As Long, ByVal ParameterNumber As Integer, ByVal Inputoutput Type As Integer, ByVal ValueType As Integer, ByVal ParameterNumber As Integer, ByVal ColumnSize As Long, ByVal DecimalDigits As Integer, ByRef Parameter ValuePtr As Any, ByVal BufferLength As Long, ByRef StrLen_or_IndPtr As Any)As IntrgerPublic Declare Function SQLExecDirect Lib “odbc32.dll”(ByVal StatementHandle As Long, ByVal StatementText As String, ByVal TextLength As long)As LongPublic Declare Function SQLEXecute Lib “odbc32.dll”(ByVal StatementHandle As long)As Long其中ByVal关键词后的变量按值传送,ByRef关键词后的变量按地址传送;VB调用外部函数声明之后,在VB中可像调用其他VB函数一样调用这些函数;注意ODBC API函数的参数表中某些变量是一个VOID类型指针,通过标识常量进行标识;如:SQLSetStmtAttr函数的第三个参数(SQLPOINTER Value)他即可以传递数值也可以传递地址,通过第四个参数(SQLINTEGER StringLength)进行标识,在VB中为(ValuePtr As Long);传递数值:Call SQLSetStmtAttr(语句句柄,属性,属性值,SQL_IS_UINTEGER)传递地址:Call SQLSetStmtAttr(语句句柄,属性,GetAddress(变量),0) GetAddress取地址按如上规则,在VB中直接调用ODBC API函数。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大连海联自动控制有限公司,未经大连海联自动控制有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201310594905.1/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top