首页 新闻 赞助 找找看

asp执行sqlserver的insert into语句出现逗号错误

1
悬赏园豆:200 [已解决问题] 解决于 2011-09-19 20:39

就是下面这语句

Conn.Execute("Insert InTo member2011(name,telphone,number,college,classname,iscadre,remark) values('"&sname&"','"&tel&"','"&snumber&"','"&college&"','"&zclass&"',"&isadmin&",'"&remark&"')")

 

谢谢各位了!

涵曦的主页 涵曦 | 初学一级 | 园豆:65
提问于:2011-09-19 09:56
< >
分享
最佳答案
0

像这样的情况,不要这样写

用 :

Rs.Open "select * from member2011 where 1=2",conn,3,2

Rs.AddNew()

Rs("name")=sname

Rs("telphone")=tel

Rs("college")=college

 

Rs.Update()

Rs.Close

 

这样写,不会出现你那样的错误,也比较安全了

收获园豆:50
fun5 | 初学一级 |园豆:4 | 2011-09-19 10:52

谢谢你,你的解答我采纳了,写起来确实不容易出错,以前我用VB和access写了个东西,用的不是你这种方法,中途就出现过好多次错误。

其实这个问题是出在我把那些变量放在了一个sub里面成了局部变了,最后是通过调试发现变量都为空才找出问题的。

涵曦 | 园豆:65 (初学一级) | 2011-09-19 20:36

@涵曦:

采纳给分啊 o(∩_∩)o 哈哈

fun5 | 园豆:4 (初学一级) | 2011-09-19 20:38

呵呵,给的有点慢,刚回复完

涵曦 | 园豆:65 (初学一级) | 2011-09-19 20:40
其他回答(4)
1

用SQL Server Profiler看一下实际执行的SQL语句。

收获园豆:50
dudu | 园豆:31075 (高人七级) | 2011-09-19 10:13

谢谢你,你的意见提醒了我使用这语句:

response.write(sql) '在这里输出一下sql语句 , 看看哪里有没有问题
response.end ' 停止

如下:

sql="Insert InTo member2011(name,telphone,number,college,classname,iscadre,remark,position) values('"+sname+"','"+telphone+"','"+snumber+"','"+college+"','"+classname+"',"+iscadre+",'"+remark+",'"+position+"')"
response.write(sql) '在这里输出一下sql语句 , 看看哪里有没有问题
response.end ' 停止
Conn.Execute(sql)
Conn=nothing
Conn.Close

让我知道了问题所在,是因为我把那些变量放在了一个sub里面,成了局部变量,所以就在这个sub里面,那些变量为空。从而出问题了

支持(0) 反对(0) 涵曦 | 园豆:65 (初学一级) | 2011-09-19 20:30
0

试试:

Conn.Execute("Insert InTo member2011(name,telphone,number,college,classname,iscadre,remark) values('"+sname+"','"+tel+"','"+snumber+"','"+college+"','"+zclass+"',"+isadmin+",'"+remark+"')")

还有,如果有非字符类型的不要加单引号,不知道你的telphone,number在数据库中是什么类型?

收获园豆:30
artwl | 园豆:16736 (专家六级) | 2011-09-19 10:13

是我问题没写清楚,不好意思,您的解答我试过,今天忙了一天就在查错,终于可以了,谢谢你

支持(0) 反对(0) 涵曦 | 园豆:65 (初学一级) | 2011-09-19 20:32
0

,"&isadmin&", 是这个地方的问题把,不能用双引号

收获园豆:20
wangd | 园豆:75 (初学一级) | 2011-09-19 10:17

不好意思,我问题没说清楚,一天没回复你,现在问题解决了,谢谢你的回答

支持(0) 反对(0) 涵曦 | 园豆:65 (初学一级) | 2011-09-19 20:33
0

&sname&"','"&tel&"','"&snumber&"','"&college&"','"&zclass&"',"&isadmin&",'"&remark&"
这几个变量如果有一个含有 单引号 那么就 拼接出错了,还有如果这个几个变量中如果是非字符串型并且为空 那么这个地方就会拼接出2个逗号,那么就错误了
1:参数化拼接
2:过滤单引号
3:判断空时的默认值

收获园豆:50
慧☆星 | 园豆:5640 (大侠五级) | 2011-09-19 16:17

谢谢你,确实是变量为空的原因。我把那些变量放在了一个sub里面成了局部变了,最后是通过调试发现变量都为空才找出问题的。

支持(0) 反对(0) 涵曦 | 园豆:65 (初学一级) | 2011-09-19 20:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册