注册 登录
编程论坛 ASP技术论坛

[求助]对着书上抄的,而且还是最常用的一句连接代码还能错,我运气真背!

lijiong520 发布于 2007-10-20 18:31, 925 次点击
<%'用Command对象
 set myconn=Server.CreateObject("ADODB.Connection")
set myconn.open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = "&server.Mappath("user.mdb")
set mycomm=server.CreateObject("ADODB.Command") '建立命令对象mycomm
set mycomm.activeconnection=myconn'表示Command对象与Connection对象的连接关系
mycomm.commandtext="insert into user (userid,userpwd1,nickname,sex,age,qq,address,mail) vales (?,?,?,?,?,?,?,?)" '?号表示未知的参数
mycomm.commandtype=1 '表示以上的数据查询类型为SQL (1代表SQL),指定查询类型可加快查询速度
mycomm.parameters.append cm,createparameter("b1",200,,25)
mycomm.parameters.append cm,createparameter("b2",200,,25)
mycomm.parameters.append cm,createparameter("b3",200,,25)
mycomm.parameters.append cm,createparameter("b4",200,,25)
mycomm.parameters.append cm,createparameter("b5",200,,25)
mycomm.parameters.append cm,createparameter("b6",200,,25)
mycomm.parameters.append cm,createparameter("b7",200,,25)
mycomm.parameters.append cm,createparameter("b8",200,,25)
'传递对象给Paramenter对象,实际传给了?,?
mycomm("b1")=userid
mycomm("b2")=userpwd1
mycomm("b3")=nickname
mycomm("b4")=sex
mycomm("b5")=age
mycomm("b6")=qq
mycomm("b7")=address
mycomm("b8")=mail
mycomm.Execute '执行在mycommandtext中定义的操作
myconn.close
%>
这是对着书上抄的,出现抄错的现在也许正常!可错的太不是地方了!竟然是第一代码!错误信息如下:
Microsoft VBScript 编译器错误 (0x800A0408)
无效字符
/zhuce/newzc_cl.asp, line 31
 set myconn=Server.CreateObject("ADODB.Connection")
真郁闷,这句代码用在别的地方都行,可在这咋了,这有啥无效字符啊!
高手看看给指点迷津吧!
19 回复
#2
永夜的极光2007-10-20 18:41
myconn变量定义了吗?
#3
tianyu1232007-10-20 18:51

错误提示的行,未必是错误的行,也可能是与他相关的行错了!

set myconn=Server.CreateObject("ADODB.Connection")
set myconn.open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = "&server.Mappath("user.mdb")
set mycomm=server.CreateObject("ADODB.Command") '建立命令对象mycomm
set mycomm.activeconnection=myconn'表示Command对象与Connection对象的连接关系

红色部分能这么写吗?取掉试试!
#4
lijiong5202007-10-20 18:59

tianyu123 哥们你好!上个问题都是你用rs.addnew给解决的! 这个按书的抄的! 按你刚才的把提示的两个Set去了,还是光去set myconn.open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = "&server.Mappath("user.mdb")这一行中的Set试了一下,还不行! 同样的错误,你们再看看,呵呵那错了!

#5
tianyu1232007-10-20 19:06

两个都去掉,提示什么错误!
#6
lijiong5202007-10-20 21:27
同样的错误!
#7
multiple19022007-10-20 21:30
“vales ”

这是什么东西……
#8
hmhz2007-10-20 23:06
呵呵

vales 改成 values
#9
lijiong5202007-10-21 13:24
还不行,同样的错误!!
#10
multiple19022007-10-21 13:51
而且那个set用得很差强人意,编译器看不懂。
#11
hmhz2007-10-21 16:26
真搞不懂现在书写出来的东西都不负责任
#12
yms1232007-10-21 16:36
以下是引用hmhz在2007-10-21 16:26:10的发言:
真搞不懂现在书写出来的东西都不负责任

有些教科书的确质量低劣,明显的错误不调试直接放到教科书里

#13
hmhz2007-10-21 16:38
很多人在我群里都问,为什么这样会出问题,都是从书上原版抄写的,也会出错

可想而知,现在写书的,不是为了造福人类,而是为了造福自己的钱包
#14
lijiong5202007-10-21 17:48
大家现在别说教科书的问题了, 看看那里错了,呵呵!!! 我楼主
#15
madpbpl2007-10-21 19:28
最前面的一段改成,
set myconn =Server.CreateObject("ADODB.Connection")
myconn.open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = "&server.Mappath("database/user.mdb")
set mycomm=server.CreateObject("ADODB.Command")
mycomm.activeconnection=myconn
mycomm.commandtext="insert into [user] (userid,userpwd1,nickname,sex,age,qq,address,mail) vales (?,?,?,?,?,?,?,?)"
mycomm.commandtype=1



可能是你的第一句带有特殊字符或是空格造成的错误原因。
mycomm.parameters.append cm,createparameter("b1",200,,25) '这里也开始出错,createparameter我搜索了一下ado的createparameter好象是用在sql server上的,对于acc也有这种用法?sql server不熟悉了,期待楼下指教。
#16
madpbpl2007-10-21 20:24
mycomm.parameters.append cm,createparameter
全都改成
mycomm.parameters.append mycomm.createparameter

还是会报错,insert into错误,再次期待楼下调整。
#17
lijiong5202007-10-21 22:15
16楼,如你所说,还是报错!再次期待楼下调整个正确的
#18
lijiong5202007-10-21 22:25

按16楼的改正以后,出现像15楼说的问题!
错误类型:
Microsoft VBScript 运行时错误 (0x800A000D)
类型不匹配: 'createparameter'
/zhuce/newzc_cl.asp, 第 170 行
就是这一行 mycomm.parameters.append mycomm,createparameter("b1",200,,25)
书上都是这样写的,Access数据库!楼上楼下的都再看看,一起把这个问题给解决了!

#19
中国男孩2007-10-22 11:51

我建议看源程序

#20
madpbpl2007-10-22 13:06
<%
set myconn=Server.CreateObject("ADODB.Connection")
set myconn.open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = "&server.Mappath("user.mdb")
set mycomm=server.CreateObject("ADODB.Command") '建立命令对象mycomm
set mycomm.activeconnection=myconn'表示Command对象与Connection对象的连接关系
mycomm.commandtext="insert into user (userid,userpwd1,nickname,sex,age,qq,address,mail) values (?,?,?,?,?,?,?,?)" '?号表示未知的参数
mycomm.commandtype=1 '表示以上的数据查询类型为SQL (1代表SQL),指定查询类型可加快查询速度
mycomm.parameters.append mycomm.createparameter("b1",200,,25)
mycomm.parameters.append mycomm.createparameter("b2",200,,25)
mycomm.parameters.append mycomm.createparameter("b3",200,,25)
mycomm.parameters.append mycomm.createparameter("b4",200,,25)
mycomm.parameters.append mycomm.createparameter("b5",200,,25)
mycomm.parameters.append mycomm.createparameter("b6",200,,25)
mycomm.parameters.append mycomm.createparameter("b7",200,,25)
mycomm.parameters.append cm,createparameter("b8",200,,25)
'传递对象给Paramenter对象,实际传给了?,?
mycomm("b1")=1 '改成具体的值,我这里假设类型全是文本,以下相同
mycomm("b2")=1
mycomm("b3")=1
mycomm("b4")="男"
mycomm("b5")=1
mycomm("b6")=1
mycomm("b7")=1
mycomm("b8")=1
mycomm.Execute '执行在mycommandtext中定义的操作
myconn.close
%>
可能是 userid,userpwd1,nickname,sex,age,qq,address,mail 没有具体的值造成的错误,还有第一行注意不要把特殊字符或空格带进去。这样测试通过,建议不要完全相信书,就象上面一些朋友说的,现在有些书简直不负责任,误人了弟。
1