设计Microsoft Windows NT操作系统上的32位SQL Server 应用程序
Christopher Moffatt Microsoft Technical Resources Group
摘要
Microsoft® Windows NT™操作系统是建立充满活力、功能丰富的Microsoft SQL Server应用程序的一个完美的平台。SQL Server Programmer’s Toolkit for Windows NT(SQL Server 程序员Windows NT工具包)含有DB-Library™的32位(Win32™ API)版本,使得开发Windows NT操作系统上的用于Microsoft SQL Server的DB-Library客户端程序成为可能。
这篇技术文章用于将DB-Library开发人员引入到Microsoft Windows NT平台上,讨论的问题包括将已有的Windows™ 3.x和OS/2®操作系统平台上的DB-Library应用程序转换到Windows NT操作系统,并对DB-Library应用程序如何利用Win32应用程序编程接口(API,application programming interface)的一些方法进行了概要说明。
本篇技术文章假定你已熟悉DB-Library API、C语言编程以及下列内容:
· Microsoft SQL Server Programmer’s Reference for C
· Microsoft Win32 API Programmer’s Reference, 第1、2卷
· Converting OS/2 Applications to Windows
建立基于Win32的DB-Library应用程序
下面的章节描述了有关使用Microsoft® Win32™应用程序编程接口(API,Application Programming Interface)建立DB-Library™应用程序的应用。
Win32 DB-Library体系结构
在内部机制上,Win32的DB-Library动态链接库(DLL,dynamic-link library)与OS/2®上的实现方式类似。与在OS/2的一样,在Win32中一个独立的操作系统线程(thread)处理每次DB-Library所发出的与SQL Server的联接。通过调用一个进程(process)所装入的每个DB-Library DLL实例(instance)在共享代码的同时得到了一个私有数据区。
Win32 DB-Library体系结构与在Microsoft Windows™ 3. x中的实现方式不同。在Windows 3.x中,DB-Library DLL只有一个被所有调用的进程共享的数据段。W3DBLIB.DLL通过对单一数据段的联接的一个链接式列表维护DB-Library联接。这种体系结构是需要的,因为在Windows 3.x动态链接库只有一个被所有调用进程共享的数据段。这样就必须通过调用dbinit和dbwinexit函数初始化和清除DB-Library DLL数据结构。
库
Win32的DB-Library函数包含于NTWDBLIB.DLL中,而命名管道(named pipe)驱动程序包含在DBNMPNTW.DLL中。应设置PATH环境变量包含这些动态链接库所在的目录。
另一个文件,NTWDBLIB.LIB,包含了你的应用程序使用Win32 API的引入(import)定义。应设置LIB环境变量包含NTWDBLIB.LIB所在的目录。
包含文件
SQL Server Programmer’s Toolkit for Windows NT™提供了下列包含文件:
包含文件 内容
SQLFRONT.H 错误代码和严重级(severity levels),混合定义(miscellaneous definitions),和类型定义。
SQLDB.H 所有DB-Library函数的函数原型
你可以在INCLUDE环境变量中添加路径,包含这些包含文件所在的目录。或者你也可以使用/I编译行开关指向包含文件所在的目录。
因为你的使用Win32 API的应用程序必须包含SQLDB.H文件,所以你不需要定义所使用的DB-Library函数。这些函数和它们的正确定义已包含在该包含文件中。你必须在包含DB-Library 包含文件之前定义一个应用程序的操作系统。在所有使用Win32 API设计的DB-Library应用程序的开头包含下列语句;
#define DBNTWIN32
#include <sqlfront.h>
#include <sqldb.h>
你还能通过使用/D编译行参数定义操作系统(例如,使用/DDBNTWIN32 而不是通过一个#define定义)。
编译和链接
下面的例程显示了一个简单的build文件。该文件使用NMAKE工具编译和链接可调试的使用Win32 API的DB-Library应用程序:
NTLIB=/nt/sdk/lib/i386
DBLIB=/sql/dblib/lib
guilibs= $(NTLIB)/gdi32.lib $(NTLIB)/user32.lib $(NTLIB)/
userrtl.lib $(NTLIB)/kernel32.lib $(NTLIB)/ntdll.lib /
$(NTLIB)/libcmt.lib
all: sqltestw.exe
# Update the object file if necessary.
sqltestw.obj: sqltestw.c sqltestw.h sqltestw.rc makefile
cl386 -c -G3d -Di386=1 -DWIN32 sqltest.c
# Update the resource file if necessary.
sqltestw.res: sqltestw.rc sqltestw.h dilaogs.h dialogs.dlg makefile
rc -r -fo sqltestw.tmp sqltest.rc
cvtres -i386 sqltestw.tmp -O sqltestw.res
del sqltestw.tmp
# Update the exe file if necessary.
sqltestw.exe: sql.obj sqltestw.obj sqltestw.res makefile
link -machine:i386 -subsystem:windows -out:sqltestw.exe/
-entry:WinMainCRTStartup/
sqltestw.res sqltestw.obj $(guilibs)/
($DBLIB)/ntwdblib.lib
将基于Windows 3.x的DB-Library应用程序转换到Win32环境
所有的DB-Library函数都完全能够在平台间转换。你不需要更改你的任何DB-Library调用。你仅仅需要在编译时定义应用程序的操作系统(例如, 对于Windows NT为#define DBNTWIN32)。
因为Win32 API保持了与Windows 3.x操作系统的兼容性,所以Win32 DB-Library DLL支持所有基于Windows 3.x的DB-Library函数,即使这些函数不需要也是如此。在Windows 3.x出现而在Windows NT中并不需要的DB-Library函数(例如,DBLOCKLIB和DBUNLOCKLIB)可以被使用,但不执行任何操作。
两个DB-Library函数,dbprhead和dbprrow,由于发送输出到STDIO而在Windows 3.x并不被支持,但在Win32中它们能够被支持并用于开发CONSOLE子系统应用程序。dbprhead和dbprrow函数提供了一种简便的方式将查询结果显示到默认输出设备。 <  
说明:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
1/2 1 2 下一页 尾页 |