如何在前台DOS环境下直接调用后台的MS SQL Server 7.0
编号:QA002319
建立日期: 1999年12月26日 最后修改日期:2001年3月22日
所属类别:
wsd:
操作系统:dos window nt
编程工具:c
问题:后台是Win NT 数据库是MS SQL Server 7.0,前台是DOS,现在想在前台DOS环境下直接调用后台的MS SQL Server 7.0,我想应该用C。但不知应该如何处理?不知您是否有这方面的例子,可否指点一下,谢谢!
回答:
Use DB-Libary! See MS SQL Developer Document.
佚名的意见:
MS SQL7.0 安装盘有个目录叫client,其下有win16和dos的子目录,里面有DB-Libary的静态连接库及例子程序。具体的函数看SQL7的BOOKS ONLINE。
彭锐的意见:
// cl test.cpp -o test.exe /link ntwdblib.lib
#define DBNTWIN32
#include <windows.h>
#include <sqlfront.h>
#include <sqldb.h>
dbinit();
login=dblogin();
DBSETLUSER(login, "sa");
DBSETLPWD(login, "");
DBSETLAPP(login, "server");
dbsetlogintime(10);
dbproc=dbopen(login, NULL);
dbfreelogin(login);
dbuse(dbproc, "sms");
while(nStatus == FAIL){
dbcmd(dbproc, "SELECT ISNULL(MAX(GLOBAL_ID), 0) FROM TICKET");
dbsqlexec(dbproc);
if(dbresults(dbproc) == SUCCEED){
dbbind(dbproc, 1, FLT8BIND, (DBINT)0, (BYTE*)&global_id);
while(dbnextrow(dbproc) != NO_MORE_ROWS){
global_id_max=global_id;
}
global_id_max++;
dbfreebuf(dbproc);
sprintf(insertTicketSql, "INSERT INTO TICKET VALUES(%lf, '%s', '%s', '%s', '%s', '%s', '%s', '%s')", global_id_max, ticket_id, custom_type, time_limit, important_level, icp_mode, icp_ask, chFullDate);
dbcmd(dbproc, insertTicketSql);
nStatus=dbsqlexec(dbproc);
}
}
dbfreebuf(dbproc);
dbcancel(dbproc);
memset(selectReturnSql, 0x0, BUFFER_SIZE);
sprintf(selectReturnSql, "SELECT HL_CONTENT FROM HL WHERE (HL_DATE='%s')", chDateSelect);
dbcmd(dbproc, selectReturnSql);
dbsqlexec(dbproc);
if(dbresults(dbproc) ==SUCCEED ){
dbbind(dbproc, 1, STRINGBIND, (DBINT)0, (BYTE*)icp_return);
if(dbnextrow(dbproc) == NO_MORE_ROWS){
isOK=false;
}
else{
isOK=true;
}
}
memset(s, 0x0, BUFFER_SIZE);
if(isOK){
ConstructSuccessfulReturn(s, ticket_id, icp_return);
}
else{
ConstructFailedReturn(s, ticket_id);
}
dbclose(dbproc);
dbexit();
return;
//希望有所帮助
此问题由John Liu回答。
| |
|
|
| |
|
|