数据库打开,字符串问题

wuhx1999 2005-01-20 08:12:52
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<html>
<head>
<%
session("table_name")=request.QueryString("table_name")
if Request("submit")<>"" then
dim rs
set rs=Server.CreateObject("ADODB.RECORDSET")
with rs
.open session("table_name"),session("conn"),2,2,adcmdtable
.find "name = '"&request("name")&"'"
if .eof then
.addnew
.fields("name")=request("name")
.update
Response.Write("已成功添加"&request("name"))
.close
set rs=nothing
else
Response.Write(request("name")&"已存在")
end if
end with
end if

%>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<body>

<h2>新增
<%
if session("table_name")="department" then %>部门
<%else %>物品
<%end if%></h2>
<form action="add_department.asp" method="post" >


<TABLE>
<TR>
<TD><%
if session("table_name")="department" then %>部门
<%else %>物品
<%end if%>名称<%=session("table_name")%></TD>
<TD><INPUT TYPE="text" NAME="name"></TD>
</TR>
<TR>
<TD><INPUT TYPE="submit" name="submit" value="确认"></TD>

<TD><INPUT TYPE="button" value=" 返回" onclick="window.close()">
</TR>
<TR>
<TD></TD>
<TD></TD>
</TR>
</TABLE>
</form>
</body>
</html>
其中 .open session("table_name"),session("conn"),2,2,adcmdtable  //(session("table_name")中为上一页面传来的字符串表名,经测试传来的字符串无误)出错
改为 .open "department"session("conn"),2,2,adcmdtable //(department为表名)则运行正常
请高手指点一下,我想让该页面重用,我的用法很奇怪吗?
...全文
88 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuhx1999 2005-01-20
  • 打赏
  • 举报
回复
因为request.QueryString("table_name")是从别的页面传来的
table_name=request.form("table_name")是响应的本页面,我又在表单中加了隐藏域传递table_name变量,不知我说明白了没有,是不是太笨了,所以我才采用session
wuhx1999 2005-01-20
  • 打赏
  • 举报
回复
谢谢各位,我接受稻草人的建议把代码改为如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<html>
<head>
<!--#include file="connections/coon.asp"-->

<%
session("table_name")=request.QueryString("table_name")
if Request("submit")<>"" then

dim rs,table_name
table_name=request.form("table_name")
set rs=Server.CreateObject("ADODB.RECORDSET")
with rs
.open table_name,oconn,2,2,adcmdtable
.find "name = '"&request("name")&"'"
if .eof then
.addnew
.fields("name")=request.form("name")
.update
Response.Write("已成功添加"&request.form("name"))
.close
set rs=nothing
else
Response.Write(request.form("name")&"已存在")
end if
end with
end if

%>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<body>

<h2>新增
<%
if session("table_name")="department" then %>部门
<%else %>物品
<%end if%></h2>
<form action="add_department.asp" method="post" >


<TABLE>
<TR>
<TD><%
if session("table_name")="department" then %>部门
<%else %>物品
<%end if%>名称</TD>
<TD><INPUT TYPE="text" NAME="name"><input name="table_name" type="hidden" value="<%=session("table_name")%>"></TD>
</TR>
<TR>
<TD><INPUT TYPE="submit" name="submit" value="确认"></TD>

<TD><INPUT TYPE="button" value=" 返回" onclick="window.close()">
</TR>
<TR>
<TD></TD>
<TD></TD>
</TR>
</TABLE>
</form>
</body>
</html>
已经通过了,不知这样做,是不是太笨了
yanxunet 2005-01-20
  • 打赏
  • 举报
回复
打开数据库的方式有很多种,因人而异,
可根据数据库的不同选择不同的连接字符串,不过在asp中最好是选OLedb
基于效率的考滤,本人选择这样做的方式,
将连接做成一个文件在要用到连接的页面包含它,如以下是我用来连接Access数据库的例子:
<%
set conn=server.createobject("adodb.connection") '创建connection对象
cs="Provider=Microsoft.jet.oledb.4.0;data source=" '创建oledb连接字符串
conn.connectionstring=cs&server.mappath("data\database.mdb") '设置连接数据源数据信息
conn.open '打开连接
%>
保存成conn.inc
在需要用到的页面加入<!--#include file="conn.inc"-->
结尾记得关闭,
conn.close
set conn=nothing
wuhx1999 2005-01-20
  • 打赏
  • 举报
回复
.open tableName,session("conn"),2,2,adcmdtable
这个用法我试了,也通不过
leinchu 2005-01-20
  • 打赏
  • 举报
回复
楼主打开数据库的方法很特别哈,我还不会呢

不过.open session("table_name"),session("conn"),2,2,adcmdtable会不会把session("table_name")的值当作变量来处理的呢?"department"就是字符串。
GageCSDN 2005-01-20
  • 打赏
  • 举报
回复
在同一个页面里,干嘛非得用Session呢,用变量就可以了..

...
...
tableName = request.QueryString("table_name")
...
...
.open tableName,session("conn"),2,2,adcmdtable
...
...
alern_zyb 2005-01-20
  • 打赏
  • 举报
回复
建议不要用session,最好用变量的方式传递参数

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧