ASP数据库连接未关闭的原因和解决方法
遇到“连接未关闭,连接状态为正在连接”的问题,真是让人头大!其实一般是因为代码中对数据库连接的打开调用了多次,像你如果用conn.Open();又用了Comm.Connection.Open();,这就等于重复开了两次连接,肯定会冲突。解决办法就是去掉Comm.Connection.Open();这一句,毕竟你已经用conn.Open();打开连接了,不需要重复。这样能保证数据库连接的状态正常,不会出现连接卡在“正在连接”的情况。

ASP中数据库连接自动断开和内容显示的实现步骤
说到自动断开连接,比如你想实现10秒内自动断开数据库连接,ASP里其实也很简单,过程大致是这样的:
-
编写代码在操作完数据库后及时关闭连接,并用
response.write "连接已经关闭!"给用户提示,这样用户也放心了,知道操作已完成。 -
要修改数据库字段,比如想给
nickname字段赋新值,只要确保连接已经关闭,再操作字段的值即可,比如adors.fields("nickname").value = "newtest-" & second(time()),这时候不会出错。 -
完成数据库表和查询窗体、宏的设置后,要通过ASP把数据库内容显示出来:
-
调用连接数据库的函数,像是
call conn_open(conn,path),先打开数据库连接。 -
使用SQL语句查询所需数据,比如
sql="select * from 表 where id="&id。 -
调用打开记录集函数,
call rs_open1(rs,sql),并判断是否有数据,如果数据存在,就读取字段值显示;没数据就提示“没有数据”。
- ASP里关于数据库操作的代码逻辑通常是:
-
设定SQL查询语句。
-
定义数组存储数据。
-
关闭旧的数据库连接或记录集。
-
创建新的ADO对象。
-
检查数据是否读取完毕,在循环中处理数据内容。
- 插入、修改数据库内容也很方便,比如:
-
用
rs.open sql,conn,1,3打开记录集。 -
用
rs.addnew添加新数据。 -
赋值字段
rs("字段名") = request.form("字段名")。 -
最后用
rs.update保存,并关闭连接。
-
删除表操作也超级简单,使用
DROP TABLE语句,比如strsql = "DROP TABLE yourtablename",然后执行objConn.execute(strsql),记得操作完关闭数据库连接,避免连接占用。 -
关于频繁打开关闭连接,有小伙伴问:“一个ASP页面中,数据库连接需要反复打开关闭么?”其实不用啦,页面打开时连接一次,操作完成页面关闭时关闭一次就OK,超级省事,记录集可以根据需要自行打开关闭,灵活灵活。

相关问题解答
- ASP中为什么会提示连接未关闭的错误?
嘿,这个问题特别常见,基本上就是你代码里开了两次连接,比如conn.Open()和Comm.Connection.Open()都上了,系统才会告诉你“连接未关闭”。其实你只需要调用一次conn.Open(),然后用Comm.Connection = conn就完全OK啦,别傻乎乎地重复开就没错啦!
- 怎么实现ASP页面里数据库连接自动断开的功能?
这个吧,你可以在数据库操作完毕后,写个提示response.write "连接已经关闭!",然后调用conn.Close()强制断开。你也可以结合计时器或者脚本实现10秒内自动断开,虽然代码稍微复杂点,但大致就是操作后马上断开连接,让服务器不会挂着,既省资源又安全,棒棒哒!
- ASP怎么把ACCESS数据库内容动态展示在页面上?
很简单!先用函数打开数据库连接,接着写SQL语句查你想要的数据,再打开记录集。然后按需求判断数据有没有,如果数据有,就读取字段显示上去;要是没有,就告诉用户“没有数据”。整体思路是:打开连接、查询数据、读取展示、关闭连接,简单又实用!
- 数据库表被删除后还会有影响吗,要怎么正确删除表呢?
哎呀,删除表其实挺严肃的事情,丢了数据就回不来了!你得用DROP TABLE 表名这个SQL语句,然后执行之后,那个表和它里面的所有数据都会被永久删除。所以操作前一定得备份清楚,确认要删!删除完后别忘了,赶紧关闭数据库连接,避免资源浪费,超级关键哦!
发表评论