日期:2014-05-18  浏览次数:20717 次

自动编号类型不匹配问题
使用jsp语言从access中按照自动编号的字段删除符合条件的行时,如下代码
String delete1="delete from question where q_id='"+id+"'";
s.executeUpdate(delete1);
运行时就会出现类型不匹配问题,这里id的类型像int,float,double,long我都试过了没有一个是匹配的,(access上说的是长整型),但是写成:
String delete1="delete from question where q_id="+id;
s.executeUpdate(delete1);
运行没问题,大家知道的还请详细解释一下!先谢谢大家了!

------解决方案--------------------
匹配int
------解决方案--------------------
晕,那也要看q_id这个是什么类型呀,知道哪种类型了,就知道该怎么引用了
------解决方案--------------------
Access这个数据库要求你传入的类型必须和数据库类型相同才行。

where id='1' 这个传入的是字符,对应的数据库应该是 varchar
where id = 1 这个传入的才是数字,对应 int 类型
------解决方案--------------------
一般的数据库可以自动进行转换,比如 SQL Server,Oracle MySQL

呵呵,Access 你就将就的用吧,我们还能要求什么呢?
------解决方案--------------------
这个问题很明显的一点是,你在拼写sql语句时有问题:
String delete1="delete from question where q_id='"+id+"'";
如果在'id'两边加上"'"的话,代表你定义的id为字符串类型,但实际上‘自动编号’的字段为数值类型的, 
所以会出现数据类型不匹配的错误。