ASP如何把同一表单信息分别写入两个不同的数据库表?
我在一个access数据库里建了两个表(user表和info表)用来储存用户注册信息,用户注册要填的信息分为:账户、密码、真实姓名、性别和年龄。我想把账户和密码储存在us...
我在一个access数据库里建了两个表(user表和info表)用来储存用户注册信息,用户注册要填的信息分为:账户、密码、真实姓名、性别和年龄。我想把账户和密码储存在user表的u_user和u_code字段,真实姓名、性别和年龄储存在info表的i_name、i_sex和i_age字段。请教大虾们怎么实现?
我的代码:
<!--#include file="db.inc.asp"-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>注册结果</title>
<style type="text/css">
<!-
body {
margin-top: 0px;
margin-bottom: 0px;
background-image: url();
background-repeat: no-repeat;
}
-->
</style></head>
<body>
<%
set rs=server.createObject("ADODB.recordset")
rs.open "select * from user where u_user='"& request.form("f_user") &"'",conn,1,3
if rs.recordcount>0 then
response.write ("用户名"&request.form("f_user") & "已经被占用,请输入其它的名称!")
response.end
else
rs.close
rs.open "select * from user",conn,1,3
rs.addnew
rs("u_user")=request.form("f_user")
rs("u_code")=request.form("f_code")
rs.update
rs.close
set rst=conn.execute("select @@IDENTITY as uid")
u_id=rst("uid")
rs.open "info",conn,1,3
rs.addnew
rs("i_uid")=rst("uid")
rs("i_name")=request.form("f_name")
rs("i_sex")=request.form("f_sex")
rs("i_age")=request.form("f_age")
rs.update
rs.close
end if
%>
<table width="800" border="0" align="center" cellspacing="0">
<tr>
<td width="218"> </td>
<td width="376" align="center" valign="middle"><img src="image/succeed.jpg" width="341" height="221" /><br>
<img src="image/fail.jpg" width="336" height="223" /></td>
<td width="200">
</td>
</tr>
</table>
</body>
</html>
错误提示为:
Microsoft OLE DB Provider for ODBC Drivers '80040e21'
多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。
\www\asp\result.asp, line 35
如果解决问题了,我再加分..先谢谢啦!
我的意思是在注册页面按“提交”按钮后能同时把账户和密码储存到user表的u_user和u_code字段,把真实姓名、性别和年龄储存到info表的i_name、i_sex和i_age字段啊。不用用两次入库 做触发器什么的。 请问怎么实现呢 展开
我的代码:
<!--#include file="db.inc.asp"-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>注册结果</title>
<style type="text/css">
<!-
body {
margin-top: 0px;
margin-bottom: 0px;
background-image: url();
background-repeat: no-repeat;
}
-->
</style></head>
<body>
<%
set rs=server.createObject("ADODB.recordset")
rs.open "select * from user where u_user='"& request.form("f_user") &"'",conn,1,3
if rs.recordcount>0 then
response.write ("用户名"&request.form("f_user") & "已经被占用,请输入其它的名称!")
response.end
else
rs.close
rs.open "select * from user",conn,1,3
rs.addnew
rs("u_user")=request.form("f_user")
rs("u_code")=request.form("f_code")
rs.update
rs.close
set rst=conn.execute("select @@IDENTITY as uid")
u_id=rst("uid")
rs.open "info",conn,1,3
rs.addnew
rs("i_uid")=rst("uid")
rs("i_name")=request.form("f_name")
rs("i_sex")=request.form("f_sex")
rs("i_age")=request.form("f_age")
rs.update
rs.close
end if
%>
<table width="800" border="0" align="center" cellspacing="0">
<tr>
<td width="218"> </td>
<td width="376" align="center" valign="middle"><img src="image/succeed.jpg" width="341" height="221" /><br>
<img src="image/fail.jpg" width="336" height="223" /></td>
<td width="200">
</td>
</tr>
</table>
</body>
</html>
错误提示为:
Microsoft OLE DB Provider for ODBC Drivers '80040e21'
多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。
\www\asp\result.asp, line 35
如果解决问题了,我再加分..先谢谢啦!
我的意思是在注册页面按“提交”按钮后能同时把账户和密码储存到user表的u_user和u_code字段,把真实姓名、性别和年龄储存到info表的i_name、i_sex和i_age字段啊。不用用两次入库 做触发器什么的。 请问怎么实现呢 展开
3个回答
展开全部
你要同时入库,是因为业务逻辑上必须做到两表数据完全同步吧,如果是这样的话,只能用数据库事务了,这样的要求不适合access这样的文本数据库,需要mssql这样的数据库才行,access这样的数据库也不适合用来处理高安全性要求的开发,及时你同时开两个连接,同时提交数据,也不可能完全做到两个表的记录都同时填写,总会有先后的,除非用事务来锁表,才能保证在任何时间访问时两表数据是同步的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<%
u_user=Trim(Request("u_user"))
u_code=Trim(Request("u_code"))
i_name=Trim(Request("i_name"))
i_sex=Trim(Request("i_sex"))
i_age=Trim(Request("i_age"))
if i_sex="" Or Not Isnumeric(i_sex) then i_sex="0"
if i_age="" Or Not Isnumeric(i_age) then i_age="0"
conn.execute("insert into user (u_user,u_code) values ('"&u_user&"','"&u_code&"')")
conn.execute("insert into info (i_name,i_sex,i_age) values ('"&i_name&"','"&i_sex&"','"&i_age&"')")
Response.Write("<script language='javascript'>msgbox='添加成功..';</script>")
%>
<script language="javascript">
alert(msgbox);
window.location.href="Regedit.Asp";
</script>
我不知道为什么要用两张表,你想你怎么知道info表里面的信息是哪一个会员的呢,所以一张表就够了,如果非要两张表的话,我建议在info表里面添加一个会员在user表里面的Id号字段。
u_user=Trim(Request("u_user"))
u_code=Trim(Request("u_code"))
i_name=Trim(Request("i_name"))
i_sex=Trim(Request("i_sex"))
i_age=Trim(Request("i_age"))
if i_sex="" Or Not Isnumeric(i_sex) then i_sex="0"
if i_age="" Or Not Isnumeric(i_age) then i_age="0"
conn.execute("insert into user (u_user,u_code) values ('"&u_user&"','"&u_code&"')")
conn.execute("insert into info (i_name,i_sex,i_age) values ('"&i_name&"','"&i_sex&"','"&i_age&"')")
Response.Write("<script language='javascript'>msgbox='添加成功..';</script>")
%>
<script language="javascript">
alert(msgbox);
window.location.href="Regedit.Asp";
</script>
我不知道为什么要用两张表,你想你怎么知道info表里面的信息是哪一个会员的呢,所以一张表就够了,如果非要两张表的话,我建议在info表里面添加一个会员在user表里面的Id号字段。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
额..这不是我们群里的么?我是小枫...
直接用两次入库就可以了.但如果你是要两个表同步的话.可以做触发器.
直接用两次入库就可以了.但如果你是要两个表同步的话.可以做触发器.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询