电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 网络编程 -> ASP教程
利 用 isapi 实 现 向 数 据 库 中 添 加 记 录 (四)_asp教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
4、ISAPI 应 用 程 序 的 编 写

   我 们 利 用 SQL 语 句 可 嵌 入 在 应 用 程 序 中 的 特 点, 把 SQL 的 有 关 请 求 语 句 嵌 入 在 ISAPI 交 互 程 序 中。 ISAPI 交 互 程 序 用 Visual C++ 编 写, 以 下 是 实 现 向 中 药 数 据 库 的 表 CMT1 中 添 加 记 录 的 主 要 程 序 段:

  
   // 建 立 一 个 CZY 类 的 成 员 函 数 FileWrite1Entry, 实 现 向 中 药 数 据 库 的 表 CMT1 中 添 加 记 录
void CZY::FileWrite1Entry(CHttpServerContext* pCtxt, LPTSTR pstrFileName)
{
    const unsigned REC_NUM=1;    // REC_NUM(数据文件中记录个数)
    const unsigned LINE=9;        // LINE(表中数据域的个数)
    const unsigned COLUMN=6000;    // COLUMN(每个数据域中字符的最大个数)
    char c,data[LINE][COLUMN];
    FILE *fp;
    StartContent(pCtxt);        //HTML头格式
    WriteTitle(pCtxt);            //HTML标题
    Cstring stringSql;
    Cstring strQuery;
    Cstring strOutput;
    Cstring pstrZY00,pstrZY01,pstrZY02,pstrZY03,pstrZY04,pstrZY05,
            pstrZY06,pstrZY07,pstrZY08;
    //以"读"的方式打开文件名为pstrFileName的文件
    if (!(fp = fopen (pstrFileName, "r")))
    {
        *pCtxt    << "< center>< font color=red>Warning: < /font>Cannot open this file.< /center>";
        return;
    }
    //从文件中读取数据
    for(int k=0; k< REC_NUM; k++)
    {
        for(int I=0; I< LINE; I++)
        {
            //忽略"{"以前的说明性字符
            do{
                c=getc(fp);
            }while(c!={);
            //读取"{"和"}"之间的字符数据
            for(int j=0; j< COLUMN; j++)
            {
                c=getc(fp);
                if(c==})
                {
                    data[I][j]=\0;
                    break;
                }
                else if((c==\r)||(c==\n)||(c=={))
                {
                    j--;
                }
                else
                {
                    data[I][j]=c;
                }
            }
        }
    }
    fclose(fp)
    //把从文件中读取的数据赋给相应的字符型变量
    pstrZY00 = data[0];
    pstrZY01 = data[1];
    pstrZY02 = data[2];
    pstrZY03 = data[3];
    pstrZY04 = data[4];
    pstrZY05 = data[5];
    pstrZY06 = data[6];
    pstrZY07 = data[7];
    pstrZY08 = data[8];
    //创建数据库对象
    Cdatabase db;
    // 确认数据
    if(     !strcmp(pstrZY00,NULLSTRING) || !strcmp(pstrZY01,NULLSTRING)||
        !strcmp(pstrZY03,NULLSTRING) || !strcmp(pstrZY05,NULLSTRING)||
        !strcmp(pstrZY06,NULLSTRING) || !strcmp(pstrZY07,NULLSTRING)||
        !strcmp(pstrZY08,NULLSTRING)    )
    {
        *pCtxt    < < "< br>< center>"
                << "Please be certain to enter your ZY00,ZY01,ZY03,ZY05,ZY06,ZY07,ZY08. \r\n"
                < < "Thank you."
                < < "< /center>";
        return;
    }
    // 格式化添加记录的条件
    strQuery.Format("ZY00 = %-.20s", pstrZY00);
    // 打开数据库对象,如果此对象不存在就退出
    if(!db.Open(ZyDB, //lpszDSN
        FALSE, //bExclusive
        FALSE, //bReadOnly
        CONNECTSTRING, //lpszConnect
        FALSE)) //bUseCursorLib
    {
        *pCtxt < < "Could not open the database.";
        return;
    }
    //创建RECOREDSET类的数据库表对象
    CZyCMT1 rsZy(&db);
    //指定格式化的添加记录的条件给表对象
    rsZy.m_strFilter = strQuery;
    //打开表对象,如果不能打开就CATCH异常处理
    try
    {
        if(rsZy.Open(Crecordset::dynaset))
        {
            //如果想添加的记录已经存在于数据库的表中,就给出IDS_ONFILE中包含的反馈信息
            if(!rsZy.IsBOF())
            {
                strOutput.Format(IDS_ONFILE, pstrZY00, SCRIPTPATH);
            }
            else
            {
                // 构造插入记录语句
                stringSql.Format("Insert into CMT1 (ZY00,ZY01,ZY02,ZY03,ZY04,ZY05,ZY06,"
                    "ZY07,ZY08) VALUES(%-.20s,%-.50s,%s, %-.80s,%s,"
                    "%-.100s,%-.9s,%-.5s,%-.2s)", pstrZY00,pstrZY01,                     pstrZY02,pstrZY03,pstrZY04,pstrZY05,pstrZY06,pstrZY07,pstrZY08);
                //执行插入记录命令。如果成功给出IDS_THANKYOU中包含的反馈信息,
                //否则CATCH异常处理
                try
                {
                    db.ExecuteSQL(stringSql);
                    strOutput.Format(IDS_THANKYOU, pstrZY00, SCRIPTPATH);
                }
                catch (CDBException* pEX)
                {
                    TCHAR szError[1024];
                    if(pEX->GetErrorMessage(szError, sizeof(szError)))
                        strOutput.Format(IDS_EXCEPTION, szError, SCRIPTPATH);
                    else
                        strOutput.Format(IDS_UNKNOWN, SCRIPTPATH);
                }
            }
        }
        else
            //如果数据库表对象不能打开,给出IDS_UNKNOWN中包含的反馈信息
            strOutput.Format(IDS_UNKNOWN, SCRIPTPATH);
    }
    catch(CDBException* pEX)
    {
        TCHAR szError[1024];
        if(pEX->GetErrorMessage(szError, sizeof(szError)))
            strOutput.Format(IDS_EXCEPTION, szError, SCRIPTPATH);
        else
            strOutput.Format(IDS_UNKNOWN, SCRIPTPATH);
    }
    rsZy.Close();        //关闭表对象
    db.Close();        //关闭数据库
    //给用户显示反馈的信息
    *pCtxt < < strOutput;
    EndContent(pCtxt);    //HTML尾格式
}


  

   编 译 好 的 ISAPI 动 态 连 接 库 程 序 将 其 置 于 /Scripts 目 录 中。 /Scripts 是 交 互 程 序 的 虚 拟 目 录。 它 可 通 过 WWW 服 务 管 理 器 来 设 定。 当 WWW 第 一 次 被 安 装 时, 缺 省 的 ISAPI 可 执 行 的 虚 拟 目 录 是 /Scripts。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·将html表单数据存储为xml格式 - 1_asp实例
·一个功能完善的专栏管理的程序->这是asp.net的第二个应用(五)_asp实例
·通过事例学习.net的webforms技术(一)_asp实例
·通过事例学习.net的webforms技术(二)_asp实例
·如何用javascript识别netscape 6 浏览器_asp技巧
·使用javascript实现邮箱快速登录的方法!!_asp技巧
·如何从数据库得到一个列表表单_asp技巧
·使用cookie来跟踪用户_asp技巧
·一个免费的简单聊天室源代码_asp实例
·stripnonnumeric函数源程序_asp实例

最新文章
·ASP基础教程:其它的ASP常用组件
·ASP基础教程:学习ASP中子程序的应用
·ASP基础教程之ASP程序对Cookie的处理
·ASP基础教程之ASP AdRotator组件的使用
·ADO初学者教程:ADO 通过GetString()加速脚本
·ASP技巧实例:几行代码解决防止表单重复提交
·ASP常见数学函数 Abs Atn Cos 等详细详解[ 来源:网页教学网 | 作者: | 时间:2007-09-12 10:57:29 | 收藏本文 ] 【大 中 小】【名称】
·ASP基础教程之ASP AdRotator 组件的使用
·ASP读sql数据时出现乱码问题的解决方法
·PHP+MYSQL实例:网站在线人数的程序代码


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号