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

[求助]asp中写入数据库出错

jsl_9_14 发布于 2007-08-27 13:48, 1080 次点击
<%

set conn=server.createObject("ADODB.Connection")
dbpath=server.mappath("../mdba/news.asp")
conn.open "driver={Microsoft Access Driver (*.mdb)};dbq="&dbpath
set rs=server.createobject("adodb.recordset")


conn.execute insert into news(classfication,title,accessory,imagesname,key1,key2,reporter,lookfrom,newsdate,content)values("a","b","c","j","d","e","f","g",h,"i")

%>

这段代码中问题出在conn.execute insert intonews(classfication,title,accessory,imagesname,key1,key2,reporter,lookfrom,newsdate,content)values("a","b","c","j","d","e","f","g",h,"i")这一句代码中,老是出错,说语句未结束.这其中a,b,c,d,e,f,g,j是一个字符型变量,h是时间变量,i是注释型变量.这几个变量的值都是从另一个数据库中得来.
请高手们帮帮忙,看一下是怎么回事,小弟是一个新手.最好能把正确的代码写出来.先谢谢了!!!
17 回复
#2
Kettyjin19832007-08-27 14:20
("a","b","c","j","d","e","f","g",h,"i")应该改成('"&amp;a&amp;"','"&amp;b&amp;"'),我在做这一步的时候也经常错,注意你的书写格式.
#3
qhscqb2007-08-27 14:22
ASP学多久了?
conn.execute insert intonews(classfication,title,accessory,imagesname,key1,key2,reporter,lookfrom,newsdate,content)values('"&a&"','"&b"'&,'"&c&"','"&j&"','"&d&"','"&e&"','"&f&"','"&g&"',"&h&",'"&i&"')
#4
hmhz2007-08-27 15:26
('"&a&"','"&b"'&,'"&c&"','"&j&"','"&d&"','"&e&"','"&f&"','"&g&"',"&h&",'"&i&"')
这里面需要根据字段类型修改,如果是数字型的就不能 '"&a&"' 了,而应该去掉两头的“'
#5
jsl_9_142007-08-28 01:40
回复:(jsl_9_14)[求助]asp中写入数据库出错
谢了,楼上的几位兄弟,我先去试一试.小弟刚学ASP不久,入门都还谈不上,今后一定虚心向各位学习.
#6
jsl_9_142007-08-28 02:09
回复:(jsl_9_14)[求助]asp中写入数据库出错
不好意思,小弟刚才试了一下,好象还是不行.

1.用conn.Executeinsert into news classfication,title,accessory,imagesname,key1,key2,reporter,lookfrom,newsdate,content)
values('"&a&"','"&b"'&,'"&c&"','"&j&"','"&d&"','"&e&"','"&f&"','"&g&"',"&h&",'"&i&"')时,"&a&"','"&b"'&,'"&c&"','"&j&"','"&d&"','"&e&"','"&f&"','"&g&"',"&h&",'"&i&"')全成了注释,可能是前面有一个"'"的原因.

然后我改用第二种方法:
strsql="insert into news(classfication,title,accessory,imagesname,key1,key2,reporter,lookfrom,newsdate,content)values('"&a&"','"&b"'&,'"&c&"','"&j&"','"&d&"','"&e&"','"&f&"','"&g&"',"&h&",'"&i&"')"
Set rs=conn.Execute(strSql)
结果还是一样,说语法未完.


这是怎么回事呢?请恕小弟愚钝!!
#7
hmhz2007-08-28 08:46

细心一点好不好?
strsql="insert into news(classfication,title,accessory,imagesname,key1,key2,reporter,lookfrom,newsdate,content)values('"&a&"','"&b"'&,'"&c&"','"&j&"','"&d&"','"&e&"','"&f&"','"&g&"',"&h&",'"&i&"')"

红色部分 改成 '"&b&"'

#8
jamesxiaoyao2007-08-28 14:38
set rs=server.createobject("adodb.recordset")
rs.open "select * from news",conn,1,3
rs.addnews
rs("classfication")=trim(request.form("classfication"))
..
..
....
rs.Update
rs.close
set rs=nothing
这样写比较好
#9
adam11032007-08-28 23:21

为什么要加个trim??

防止注入么??

#10
madpbpl2007-08-29 01:12
trim去掉空格,防止出错
#11
jsl_9_142007-08-29 02:29
回复:(jsl_9_14)[求助]asp中写入数据库出错

谢谢8楼的兄弟,问题终于解决了,就是使用8楼兄弟的方法.
今天又学到一招:添加记录除了用"INSERT INTO"外,还可以"ADDNEW".看来够得学哟!!
终于可以睡个好觉了,这个问题困绕了好几天了.
再次谢谢了,给这个问题出主意的所有兄弟!!!
睡觉去啰!!!!!

#12
qhscqb2007-08-29 12:20
insert into 是SQL语句,而addnew和update是RS对象的方法,也就是说如果用insert into 语句就可以不创建recordset记录集对象,这样减少了系统资源开支,而用addnew方法,就必须创建RS对象.
所以我还是比较喜欢使用前者来append数据.对于其语法问题,我的建议是仔细仔细再仔细(字段类型,表单传送数据,session和其他变量)

SQL语句
===========
conn.execute("insert into tab_usrinfo (usrname,usrpassWD,usrpower) values"&_
"('"&usrname&"','"&md5(usrpassWD)&"',"&usrpower&")")
===========

RS方法
===========
set rs=server.createobject("ADODB.RECORDSET")
sqlstr="select * from tab_usrinfo"
rs.open sqlstr
rs.addnew
rs("usrname")=usrname
rs("usrpassWD")=md5(usrPassWD)
rs("rsrpower")=usrpower
rs.update
rs.close
set rs=nothing
===========
#13
multiple19O22007-08-29 12:24

用InsertInto的时候要注意过滤

#14
qhscqb2007-08-29 12:32
那当然,以上的变量都是经过replace
#15
multiple19O22007-08-29 12:37

GOD 你们搞什么飞机啊

[求助]asp中写入数据库出错<%

set conn=server.createObject("ADODB.Connection")
dbpath=server.mappath("../mdba/news.asp")
conn.open "driver={Microsoft Access Driver (*.mdb)};dbq="&dbpath
set rs=server.createobject("adodb.recordset")


conn.execute insert into news(classfication,title,accessory,imagesname,key1,key2,reporter,lookfrom,newsdate,content)values("a","b","c","j","d","e","f","g",h,"i")

%>

这段代码中问题出在conn.execute insert intonews(classfication,title,accessory,imagesname,key1,key2,reporter,lookfrom,newsdate,content)values("a","b","c","j","d","e","f","g",h,"i")这一句代码中,老是出错,说语句未结束.这其中a,b,c,d,e,f,g,j是一个字符型变量,h是时间变量,i是注释型变量.这几个变量的值都是从另一个数据库中得来.
请高手们帮帮忙,看一下是怎么回事,小弟是一个新手.最好能把正确的代码写出来.先谢谢了!!!


下划线那行根本不是VBS的语法嘛

#16
authorboy2007-08-29 17:36
8楼说得对,还是用记录集比较好
#17
jamesxiaoyao2007-08-29 18:13
个人觉的,在记录比较多,字段比较复杂的情况,还是用记录集来得方便一点,而且,也容易分析出错原因。偶是8楼那位
#18
fxlzb2007-08-30 14:39
1