🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.database
Article #9996

���� ISAPI ʵ��������ݿ��ѯ

#9996
From: ��ɫ����
Date: Sat, 11 Jul 1998 00:00
206 lines
14366 bytes
������: waterbaby (ˮ��), ����: database
��  ��: ���� ISAPI ʵ��������ݿ��ѯ
����վ: ��ˮ˼Դվ (Tue May 19 08:56:54 1998) , վ���ż�

����ժҪ ���Ľ����˱�д Microsoft Internet Server Application Programming Interface��ISAPI�� 
ʵ�� Internet �ϻ��� WWW ����ݿ��ѯ�ķ����� 
���� �ؼ�� ISAPI ��Internet��WWW 
���� THE IMPLEMENTATION OF DATABASE SEARCHING 
����BASED ON THE INTERNET USING ISAPI 
����He Min Zhou Jiaju 
����( Laboratory of Computer Chemistry, Chinese Academy of Sciences Beijing 100080 
) 
���� ABSTRACT In this paper, the implementation of Internet database searching 
based on the WWW by the application of Microsoft Internet Server Application 
Programming Interface is introduced. 
���� KEYWORD ISAPI, Internet, WWW(World Wide Web). 
���� 1 ǰ�� 
�������ż������������ͨѶ������Ѹ�ͷ�չ����������������߼����ѳ�Ϊһ��Խ��Խ�ܵ��㷺���ӵ��о����⡣����Ϣ�����ӵ�ϵͳ�����ǿ����������� Microsoft 
SQL��Microsoft Foxpro��Microsoft 
Access��Sysbase��Oracle���κ�һ����ݿ⿪�����������ݿ⣬��ͨ���дӦ�ó�����ʵ��������ݿ��ѯ�����ľ����Դ�Ϊ�������������� 
Microsoft SQL��1��2��������ݿ⡢�� Visual C++ ��д ISAPI��Internet Server Application 
Programming Interface����3��Ӧ�ó���ʵ�� Internet �ϻ��� WWW��World Wide Web����4������ݿ��ѯ�ķ����� 
���� 2 ISAPI ���ܼ�� 
����ͨ����Web �ڵ����ɾ�̬�ij��ı�������ԣ� HTML��Hypertext Markup 
Language����5����ɣ�����������ͨ���ⲿ��̣����������˵Ĺ�����ؽӿ� (CGI��Common Gateway Interface) 
��6��Ӧ�ó����ű���ʵ�ֵġ����磬���������Ҫ���ʲ����� HTML ��ʽ�������ݣ��ͱ����� CGI Ӧ�ó�����������ݣ�Ȼ��ѽ���ͻص��ͻ��ˡ� 
����ISAPI ��һ�ֱ�׼�ı�̽ӿڣ�Web �����߿������д����ʽӦ�ó���ISAPI ��չ��Extension��Ӧ�ó������ CGI �ű�ͬ��Ĺ��ܣ������ 
CGI ���и�졢����Ч�����ܡ� 
����ISAPI for Windows NT ��д��Ӧ�ó���Web �û���ͨ����д HTML �?��Form���򵥻� Web �ڵ��� HTML 
ҳ���е������������Ӧ�ó��򡣷������˻�ȡ�û��ṩ����Ϣ�󣬱������ISAPI Ӧ�ó���Ի�ȡ����Ϣ�������?��� ISAPI 
Ӧ�ó���Ĺ��ܻ�ѻ�ȡ����Ϣ������ݿ⣬���Ի�ȡ����ϢΪ����������ݿ��е���ݣ�Ȼ��ѽ���� HTML ҳ�����ʽ�ͻص��ͻ��ˡ� 
����ISAPI ��Ӧ�ó��򱻱���Ϊ��̬���ӿ⣨DLL, Dynamic Linked Library�����ÿ���WWW 
����Service������ʱװ�����ڴ档��Ҫ����ٵ�ϵͳ���������������� CGI Ӧ�ó�����Ϊÿ�����󲢲����������Ľ�̡������� CGI 
����������ÿ��������Ҫ���������Ľ�̡�������Ӧ�ó�����������ݿ��ѯ�е�ִ���������£� 
����SAPI ����һ��������������������Ԥ���?Pre-processing of requests���Ͷ���Ӧ���к��?Post-precessing of 
responses ����ISAPI ���ˣ�Filter�������ڶ���ʵ�������֤���ļ���ȡȨ�޵�ȷ�Ϻ���־����ȹ��ܵ�Ӧ�ó��� 
���� 3 Internet ����ݿ��ѯϵͳ��ʵ�� 
����3.1 ��ݿ�Ľ��� 
�����ṹ����ѯ���� SQL��Structural Query 
Language����һ�ֹ�ҵ��׼�ľ���ǿ������ά���Ͳ�ѯ���ܵ����ԣ�����һ�ֿɹ����ڶ��û�ϵͳ�ϵ���������ԣ����� Client/Server 
ϵͳ�Ϲ������ر�á�����ݿ���ڷ������ˣ��ڿͻ����ϵ� SQL ��ݲ�������ͨ����ݿ����ϵͳ��DBMS��Database Manage 
System�����͸������������������ݿ����ϵͳ���Ͳ�ִ����Щ���Ȼ������ͨѶͨ��������ͻص��ͻ������� SQL ������ Client/Server 
���ܣ�SQL ��������ϵͳ����Ա�ɶ��û����ڲ�ͬ�ȼ���Ȩ�ޣ��õ���ӦȨ�޵��û��ɶԿ��еļ�¼������ӡ��޸ġ�ɾ����ѯ�Ȳ����� 
������������ Microsoft SQL Server �����ġ�customer������� 
����reate table customer ( 
����s_id varchar (30) not null, 
����name varchar (30) not null, 
����name varchar (30) not null, 
����ty varchar (20), 
����ate char (2), 
����p char (6), 
����one varchar (20) ) 
���� 3.2 ISAPI Ӧ�ó���ı�д 
������������ SQL ����Ƕ����Ӧ�ó����е��ص㣬�� SQL ���й��������Ƕ����Ӧ�ó����С��� Visual C++ ��д ISAPI Ӧ�ó���ķ����ǣ��� 
Microsoft Developer Studio �У�����һ���µ� Project Workspace���ڳ��������� Class Wizard �ġ�Add 
new class������ͨ�� ODBC��Open Database Connectivity�� �� SQL ��������� SQL ��������ݿ�ͱ����ӣ��� 
SQL ���й��������Ƕ��Ӧ�ó����У�����ɶ�̬���ӿ�ķ�ʽ����Ӧ�ó��������DZ�д Project Workspace 
����Ϊ��Customer��������Ϊʵ����ݿ��ѯ�� ISAPI Ӧ�ó������Ҫ���� 
���� // ����һ�� CCustomer ��ĺ���QueryCus��ʵ����ݿ��ѯ 
����void CCustomer::QueryCus(CHttpServerContext* pCtxt, LPTSTR pszf_name, LPTSTR 
pszl_name) 
����{ 
����rtContent(pCtxt); // ��ӡ �� ��� 
����teTitle(pCtxt); // ��ӡ ��ǵ� 
��������CString ���͵ı��� 
����ring stringSql; 
����ring strQuery; 
����ring strOutput; 
����ring strOutput1; 
����ring strOutput2; 
���������ַ��͵����� 
����r* strTemp=new char[200]; 
����r strTemp1[]="SELECT * FROM customer WHERE f_name LIKE '"; 
����r* strTemp2; 
����r* strTemp3; 
����r* strTemp4=new char[200]; 
��������CDatabase ��ı��� db 
����tabase db; 
��������ݿ⣬����ܴ򿪾��˳�������ӡ��Could not open database.�� 
 
����!db.Open(_T("Customer"), //lpszDSN ��ϵͳԴ�� 
����LSE, //bExclusive 
����LSE, //bReadOnly 
����("ODBC; UID=sa; PWD=;"), //lpszConnect ������ݿ�����ӷ�ʽ�� 
����LSE)) //bUseCursorLib 
���� *pCtxt << "Could not open database."; 
����turn; 
���� // ����CCustomerCus ��ı��� rsCustomer 
����stomerCus rsCustomer(&db); 
������ֵ 
����Temp2 = ("%-.30s", pszf_name); 
����Temp3 = ("%-.30s", pszl_name); 
����cpy(strTemp4, strTemp1); 
����cat(strTemp4, strTemp2); 
����cat(strTemp4, " ' "); 
����cat(strTemp4, "AND l_name LIKE ' "); 
����cat(strTemp4, strTemp3); 
����cat(strTemp4, " ' "); 
����cat(strTemp4, "\0"); 
����cpy(strTemp, strTemp4); 
����ete []strTemp4; 
����ingSql.Format("%s", strTemp); 
����try to �� recordset������ܴ򿪾� catch the exception�� 
���� 
���� { 
���� rsCustomer.Open(CRecordset::snapshot, stringSql); 
���� catch (CDBException* pEx) 
����{ 
���� *pCtxt << _T("Error Selecting from table:"); 
���� TCHAR szErrorMessage[1024]; 
���� if (pEx->GetErrorMessage(szErrorMessage, sizeof(szErrorMessage))) 
���� 
���� *pCtxt << szErrorMessage; 
���� *pCtxt << _T("\r\n"); 
���� 
����turn; 
���� // �ж��Ƿ��з�������ļ�¼ 
��������з�������ļ�¼ 
����(!rsCustomer.IsBOF()) 
����{ 
����*pCtxt << _T("
The Result of Customer Basic Information Searching
"); 
����Ctxt << _T("

"); 
����Ctxt << _T(""); 
    ����ile (!rsCustomer.IsEOF()) 
    ���� 
    ����/ ��ӡ��������ļ�¼ 
    ����pCtxt << _T("") << _T("[Customer ID]: ") << rsCustomer.m_cus_id << 
            _T("
            "); 
            ����pCtxt << _T("
            ") << _T("[First name]: ") << rsCustomer.m_f_name << _T("
            "); 
            ����pCtxt << _T("
            ") << _T("[Last name]: ") << rsCustomer.m_l_name << _T("
            "); 
            ����pCtxt << _T("
            ") << _T("[City]: ") << rsCustomer.m_city << _T("
            "); 
            ����pCtxt << _T("
            ") << _T("[State]: ") << rsCustomer.m_state << _T("
            "); 
            ����pCtxt << _T("
            ") << _T("[Zip]: ") << rsCustomer.m_zip << _T("
            "); 
            ����pCtxt << _T("
            ") << _T("[Phone]: ") << rsCustomer.m_phone << _T("
            "); 
            ����/ ��ָ���Ƶ���һ�� 
            ����sCustomer.MoveNext(); 
            ���� } 
            ����Ctxt << _T("
"); 
���� // ���û�з�������ļ�¼����ӡ��Sorry, there is no record according with your conditions.�� 
����e 
���� *pCtxt << _T("
Sorry, there is no record according with your conditions. 
"); 
���� // �ر� rsCustomer 
����ustomer.Close(); 
�����ر� db 
����Close(); 
����txt << _T("

"); 
������ӡ �� ��� 
����Content(pCtxt); 
����} 
���� 3.3 Ӧ�ó���İ�װ 
����ISAPI Ӧ�ó���DLL���������� /Scripts Ŀ¼�С�/Scripts ��Ӧ�ó��������Ŀ¼������Ŀ¼����ִ�з���Ȩ�� ����Ŀ¼��ͨ�� 
WWW ������������趨���� WWW ��һ�α���װʱ��ȱʡ�� ISAPI ��ִ�е�����Ŀ¼�� /Scripts�� 
����3.4 ��ѯ����ı�д 
������ı�������?HTML ��д��ѯ��ݿ��¼�Ľ��棬ͨ���ύ��д�õ�FORM ���� ISAPI Ӧ�ó���ʵ�������ѯ���������� HTML 
��д�İ����ͻ����ѯ�ͻ��й���Ϣ�Ľ��棬���ļ�ȡ��Ϊ QueryCus.htm�� 
������
Customer Information Searching System
��
���� 
����
Please input the customer's:
��First Name    
��Last Name     

����Netscape �� Internet Explorer �� URL��� http://webserver/QueryCus.htm������ 
webserver �Ƿ���������������������Ļ�Ͼͻ���ʾ��ѯ���棬��ͼ������ݲ�ѯ������ʾ�ڱ���������ͻ��ġ�First name���͡�Last 
name��ֵ���ύ���ѯ����ڿͻ��˵���ʾ��ͼ�� 
 
���� 4 ���� 
����ISAPI ����������� Web �ڵ㣬ISAPI Ӧ�ó����� WWW ��������ʱ�������ڴ棬ÿ���ͻ����󲢲��𶯵����Ľ�̣����Ҫ����ٵ�ϵͳ�������� 
ISAPI ��һ�����ܱ� CGI ��Խ�Ľ���ʽӦ�ó��� 
�������⣬����Windows NT ʹ�õ��ռ������� ISAPI ʵ��������ݿ��ѯ��Ӧ�÷�Χ����Խ��Խ�㷺�� 

--

        ����ȱˮ�����������кܶ�ˮ��
        ���������ҵ�����Ȼ����ʵʵ����
        ���ڱ��ӣ�����

m;32m�� ��Դ:����ˮ˼Դվ bbs.sjtu.edu.cn��[FROM: 202.120.5.220]m--
1��   �ٶ�+��Ǯ+�ǻ�=ʤ��

�� ��Դ:���̺����� bbs.dlut.edu.cn��[FROM: 202.118.68.70]
Technical Details
Message-ID: <3PRLeY$I8G@bbs.dlut.edu.cn>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB
X-Google-Thread: 101948,dc09719d65f8cfe5,start
X-Google-Attributes: gid101948,public
From: redalert.bbs@bbs.dlut.edu.cn (��ɫ����)
Subject: ���� ISAPI ʵ��������ݿ��ѯ
Date: 1998/07/11
Message-ID: <3PRLeY$I8G@bbs.dlut.edu.cn>
X-Deja-AN: 370909100
Organization: �̺�����
X-Filename: DATABASE/M.900158626.A
Newsgroups: cn.bbs.comp.database