ASP连接数据库,对数据库记录为何不能进行删除操作?急!!!!
各位高手:为何我不能进行数据库记录的删除操作呢?我的系统是Windows2000 Professional(2195)+sp2+IIS 5.0+Access 2000。我想对数据进行删除操作,但是IE却提示我出错,以下是我的源代码,请各位高手赐教!谢谢!本人非常着急,要在五一之前完工!
<%@ Language=VBScript %>
<%
Set objConn = Server.CreateObject("ADODB.Connection")
DBPath=Server.MapPath("database.mdb")
objConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
set rs = Server.CreateObject("ADODB.Recordset")
sql="delete from data "
rs.Open sql,objConn,adOpenDynamic,adLockPessimistic
%>
<HTML>
<HEAD><title></title>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<P> </P>
</BODY>
</HTML>
问题点数:100、回复次数:18Top
1 楼wangfei2428(龙飞)回复于 2002-04-24 09:07:52 得分 20
sql="delete from data "
rs.Open sql,objConn,adOpenDynamic,adLockPessimistic
改为
sql="delete * from data "
objconn.execute(sql)Top
2 楼wangfei2428(龙飞)回复于 2002-04-24 09:08:33 得分 0
如还有问题
wangfeifei2428@hotmail.comTop
3 楼kisswind(让心情去流浪)回复于 2002-04-24 09:08:56 得分 0
另外IE提示是:
错误类型 ADODB.Recordset (0x800A0BB9)
Top
4 楼CodeDuDu(都都)回复于 2002-04-24 09:10:23 得分 5
sql="delete from data "
objconn.execute(sql)Top
5 楼kisswind(让心情去流浪)回复于 2002-04-24 09:13:05 得分 0
另附上IE提示:
错误类型:Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
Top
6 楼ChinaOk(农村表哥)回复于 2002-04-24 09:14:23 得分 5
adOpenDynamic,adLockPessimistic
这些都是adovb.inc里定义的常量。所以你要包含这个文件。
不然你就用数字来代替这些变量。
另外你删除的sql不对。
delete * from data
这样你就把数据全删出了。
delete * from data where Key13D'value1'Top
7 楼kisswind(让心情去流浪)回复于 2002-04-24 09:15:14 得分 0
多谢两位的回复,不过还是有问题,我怀疑是不是数据库的问题,不知道两位有何指教?Top
8 楼wangfei2428(龙飞)回复于 2002-04-24 09:17:28 得分 0
是不是连接有错误
dim objconn
dim connstr
connstr="DBQ="+server.mappath("database.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set objconn=server.createobject("ADODB.CONNECTION")
objconn.open connstrTop
9 楼kisswind(让心情去流浪)回复于 2002-04-24 09:20:54 得分 0
回ChinaOK:
可是我查找了硬盘所有的文件都没有:adovb.inc这个文件啊?我的系统也装了有VBTop
10 楼kisswind(让心情去流浪)回复于 2002-04-24 09:25:06 得分 0
回wangfei2428:
我的连接应该是没有问题的,因为我曾经写过查询功能的,没有问题,能够正确的返回我所需要的结果。Top
11 楼kisswind(让心情去流浪)回复于 2002-04-24 09:29:25 得分 0
delete * from data where Key13D'value1'
恕我愚昧,请问这是什么意思啊?Top
12 楼scgqq(轻骑兵)回复于 2002-04-24 09:31:27 得分 5
这是我的删除代码,一点问题都没有
StrSQL = "delete from t_PerRequestForm WHERE cRequestName='"&ren&"' and dRequestTime='"&red&"'"
Conn.Execute (StrSQL)Top
13 楼wangfei2428(龙飞)回复于 2002-04-24 09:33:47 得分 0
您可以不要adovb.inc这个文件,用这个试试
dim objconn
dim connstr
connstr="DBQ="+server.mappath("database.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set objconn=server.createobject("ADODB.CONNECTION")
objconn.open connstr
sql="delete * from data "
objconn.execute(sql)
Top
14 楼setfocus(斗是懂一点)回复于 2002-04-24 09:39:44 得分 5
Set objConn = Server.CreateObject("ADODB.Connection")
DBPath=Server.MapPath("database.mdb")
objConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
set rs = Server.CreateObject("ADODB.Recordset")
rs.open "select * from data",objConn,3,3
rs.delete
rs.close
Top
15 楼kisswind(让心情去流浪)回复于 2002-04-24 09:50:53 得分 0
我查看了一下IE提示的错误:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
不支持此接口,我想是不是通过SQL语句操作数据库的问题呢?
Top
16 楼abigfrog(千年精灵)(★JAVA★)回复于 2002-04-24 10:08:00 得分 10
strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("database.mdb")
set conn = server.createobject("adodb.connection")
conn.open strconn
conn.execute("delete from data ")Top
17 楼abigfrog(千年精灵)(★JAVA★)回复于 2002-04-24 10:12:38 得分 0
如果你的数据库路径不错的话,下面程序肯定可以。
注意:这里的数据库路径是相对路径!
dim conn
dim connstr
connstr="DBQ="+server.mappath("database.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
conn.execute("delete from data ")
Top
18 楼BrightEye(男儿当自强,靠别人不如靠自己)回复于 2002-04-24 11:10:53 得分 50
ASP中常见的错误80004005信息和解决办法
错误80004005信息处理方法
错误信息(错误信息我不用翻译成中文了把,呵呵,大家谅解)
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] The Microsoft Jet database
engine cannot open the file '(unknown)'. It is already opened exclusively
by another user, or you need permission to view its data.
原因:
这个错误发生在当IIS使用匿名帐号(通常是IUSR)时,该帐号在NT中对数据库所在的目录
没有正确的权限.(这就是为什么在Win95和PWS下没问题,因为win95根本就没有目录权限这一说)
检查文件和目录的权限. 确定你能够在该目录中有能够新建和删除临时文件的权限。
这些临时文件其实是数据库建立在同一个目录下的文件, 但是要注意的是,有可能这些文件
也可能建立在别的目录,例如 /Winnt.
使用NT的文件监视程序监视文件失败时到底是访问了什么目录。
这个NT的文件监视程序可以在这个地方下载http://www.sysinternals.com.
如果你对数据库使用了一个网络地址,例如映射地址,就要检查一下共享文件和目录的权限,
还要检查一下数据源文件(DSN)是否被别的程序标志成为正在使用中,
这些别的程序一般是Visual InterDev,关闭任何一个InterDev中的正打开和数据库连接的项目。
这个错误还可能发生在这种情况:如果在DSN中使用了一个UNC路径(就是通用命名协议),请改用
本地路径进行测试,因为如果对本地数据库使用UNC也可能出错。
还可能发生在这种情况,如果服务器要访问Access中的一个表,而这个表却联接在一个网络服务器上。
错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Couldn't use '(unknown)'; file
already in use.
原因:
多人使用时数据库被锁定。
错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no default
driver specified.
原因:
最可能的原因是ConnectString是一个在global.asa中初始化的Session变量 ,但是global.asa
却没有正常工作。解决办法是,检查赋值时是否正确:(在你的asp中加入下面的代码)
<%= "'auth_user' is " & request.servervariables("auth_user")%>
<P>
<%= "'auth_type' is " & request.servervariables("auth_type")%>
<P>
<%= "connection string is " & session("your_connectionstring")%>
<P>
还有一个原因就是你在你的ConnectString中加入了多余的空格,例如
DSN = MyDSN; Database = Pubs;
试试改成下面这个样子:
DSN=MyDSN;Database=Pubs;
如果是global.asa还没有工作,检查该文件是否在运用程序的根目录中,或者是虚拟目录的根目录中。
还有可能错误出现的原因是DSN名称没找着,这可以采用我提供的id=36767的办法解决。
最后是检查是否安装了最新的驱动程序,既是否是最新的MDAC版本。
错误信息
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not ??
原因:
这个错误有可能是出现在你的计算机上软件安装(或则反安装)的顺序上。
如果ODBC的版本不一致的话,就会发生该错误。
解决办法是安装最新版本的MDAC
错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Access 97 ODBC driver Driver]General error Unable to open
registry key 'DriverId'.
原因:
这个错误发生在爱从注册表中读取数值的时候。 使用regedit32.exe检查你的注册表的权限。
你也可以使用NT中的注册表监视程序(NTRegMon)来看读取失败信息。 该程序到这找:http://www.sysinternals.com
错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][dbnmpntw]ConnectionOpen (CreateFile()).
原因:
两个原因:当一个数据库中包含有分别在不用机器上的许可关系时,
这也可能发生在同一台机器上,当你给一个关系设置了UNC路径,而另一个关系却是本地路径。
错误原因是:
当用户使用IIS匿名帐号登录后,对本地这台机器而言他是有权的,但是对于一个UNC路径的机器,
另外这台机器是不会认为你当前匿名登录的帐号在它那上面也是合法的。
这样它就不允许你访问它上面的资源,导致错误。
两个解决办法:
1。在IIS工具中,改变IIS匿名帐号成另外一个基于域的帐号。(也就是不使用匿名登录)
2。或则在那台你要访问资源的机器上也创建一个和当前匿名帐号同样的帐号,使用同样的密码。
错误信息
Microsoft OLE DB Provider for ODBC Drivers error '80004005' Microsoft][ODBC
Microsoft SQL Driver] Logon Failed()
原因:
该错误是由SQL Server产生的,当它不接受或则不能够认识这个登录帐号的时候,或者没有使用管理员身份登录,
也可能是在NT中没有SQL影射帐号造成的。
使用系统管理员帐号(SA)登录,一般密码应该为空.注意,这时必须使用CoonectString而不能够使用DSN文件。
因为DSN中没有保存用户名和密码。
检查NT是否给SQL映射了帐号。
错误信息
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][SQL Server] Login failed- User: Reason:
Not defined as a valid user of a trusted SQL Server connection.
原因:
原因同上。
试试这个办法:在SQL Server的Enterprise Manager中,选择Server/SQL Server/Configure[ASCII
133]/Security Options/Standard.
如果是运行在IIS4中,取消选择该项目的Password Synchronization选项。
错误信息
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Couldn't lock file.
原因:
也许是没有正确的权限生成Access数据库的锁定文件(.ldb)
默认时,该文件和你的数据库是同一个目录的。
给匿名帐号全权访问数据库共享目录的权限。
有时是因为文件是因为共享时有意使用了只读的权限限制。试试使用下面的代码。
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Mode = adModeShareDenyWrite '8
错误信息
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] '(unknown)' isn't a valid
path. Make sure that the path name is spelled correctly and that you are
connected to the server on which the file resides.
原因:
路径非法。最可能发生在当Global.asa和CoonecntString被使用到另外一台机器上的时候。
错误信息
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][SQL Server] The query and the views in
it exceed the limit of 16 tables.
原因:
查询太复杂了,对查询有限制。
错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][DBMSSOCN] General network error. Check
your network document
原因:
当装有SQL Server的机器改名的时候。但是DSN还使用了原来的机器名。
Top
19 楼kisswind(让心情去流浪)回复于 2002-04-24 13:33:38 得分 0
问题我已经解决,原来是在WINDOWS2000下对IIS权限操作的问题,多谢各位的回答,谢谢!在这里,特别感谢BrightEye的帮助!谢谢你们!Top




