- 热门文章:
- · 利 用 ISAPI 实 现 向 数 据 库 中 添 加 记 录 (三)
- · 利 用 ISAPI 实 现 向 数 据 库 中 添 加 记 录 (二)
- · 利 用 ISAPI 实 现 向 数 据 库 中 添 加 记 录 (一)
- · ASP技术在论坛中的运用(八)(吐血推荐!!!!)
- · ASP技术在论坛中的运用(七)(吐血推荐!!!!)
- · ASP技术在论坛中的运用(六)(吐血推荐!!!!)
- · ASP技术在论坛中的运用(五)(吐血推荐!!!!)
- · ASP技术在论坛中的运用(四)(吐血推荐!!!!)
- · ASP技术在论坛中的运用(三)(吐血推荐!!!!)
- · ASP技术在论坛中的运用(二)(吐血推荐!!!!)
- · ASP技术在论坛中的运用(一)(吐血推荐!!!!)
- · 了解MSMQ,控制ASP进程 (二)
利 用 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。
()
相关文章:
- · 了解MSMQ,控制ASP进程 (一)
- · 在ASP应用中如何限制同一表单被多次提交!!!!好东西
- · ASP环境下邮件列表功能的实现 (四)(推荐)
- · ASP环境下邮件列表功能的实现 (三)(推荐)
- · ASP环境下邮件列表功能的实现 (二)(推荐)
- · ASP环境下邮件列表功能的实现 (一)(推荐)
- · ASP3.0给我们带来的新技术之一---Data Shaping技术
- · 使用ASP加密算法加密你的数据(二)
- · 使用ASP加密算法加密你的数据(一)
- · 微软dvwssr.dll后门
- · 通过asp入侵web server,窃取文件毁坏系统
- · 一个BBS的源代码(六)
- · 一个BBS的源代码(五)
- · 一个BBS的源代码(四)
- · 一个BBS的源代码(三)
- · 一个BBS的源代码(二)
- · 一个BBS的源代码(一)
- · 如何实现动态添加Html文档中Form项
- · 组件对象开发Web应用的实例分析
- · 如何使用ASP在自己的网站建立投票机制(二)
- · 如何使用ASP在自己的网站建立投票机制(一)
- · 优化MICROSOFT ACCESS提高速度
- · 网络开发之编程技巧之一(有效验证用户的登录)
- · IIS 5.0新功能
- · WINDOWS 2000搭載ASP3.0和IIS5.0
- · 如何使用 Microsoft Access 和 Active Server Pages 加密你的页面
- · IIS5 + ADO 2.5新先睹为快技术(二)
- · IIS5 + ADO 2.5新先睹为快技术(一)
- · ASP 3.0 新特色先睹为快(二)
- · ASP 3.0 新特色先睹为快(一)
- · 如何用ASP编写网站统计系统四
- · 如何用ASP编写网站统计系统三
- · 如何用ASP编写网站统计系统二
- · 如何用ASP编写网站统计系统一
- · 构建你的网站新闻自动发布系统之四
- · 构建你的网站新闻自动发布系统之三
- · 构建你的网站新闻自动发布系统之二
- · 构建你的网站新闻自动发布系统之一
