Article View: cn.bbs.comp.database
Article #9996���� ISAPI ʵ��������ݿ��ѯ
From: ��ɫ����
Date: Sat, 11 Jul 1998 00:00
Date: Sat, 11 Jul 1998 00:00
206 lines
14366 bytes
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�� �ٶ�+��Ǯ+�ǻ�=ʤ��
[m[1;37m�� ��Դ:���̺����� bbs.dlut.edu.cn��[FROM: 202.118.68.70][m
Technical Details
Message-ID:
<3PRLeY$I8G@bbs.dlut.edu.cn>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow 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