自动编号类型不匹配问题

liurenmpost 2008-06-29 03:07:01
使用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);
运行没问题,大家知道的还请详细解释一下!先谢谢大家了!
...全文
135 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liurenmpost 2008-06-29
  • 打赏
  • 举报
回复
哎,可能是以前写的时候写顺手了,总想在数据两边加上' ',谢谢大家提醒了,谁有话抓紧说,后天结帖!!!
lxddream008 2008-06-29
  • 打赏
  • 举报
回复
这个问题很明显的一点是,你在拼写sql语句时有问题:
String delete1="delete from question where q_id='"+id+"'";
如果在'id'两边加上"'"的话,代表你定义的id为字符串类型,但实际上‘自动编号’的字段为数值类型的,
所以会出现数据类型不匹配的错误。
老紫竹 2008-06-29
  • 打赏
  • 举报
回复
一般的数据库可以自动进行转换,比如 SQL Server,Oracle MySQL

呵呵,Access 你就将就的用吧,我们还能要求什么呢?
老紫竹 2008-06-29
  • 打赏
  • 举报
回复
Access这个数据库要求你传入的类型必须和数据库类型相同才行。

where id='1' 这个传入的是字符,对应的数据库应该是 varchar
where id = 1 这个传入的才是数字,对应 int 类型
liurenmpost 2008-06-29
  • 打赏
  • 举报
回复
大家要仔细看问题啊,我上面已经说的很清楚了!
flynn02 2008-06-29
  • 打赏
  • 举报
回复
晕,那也要看q_id这个是什么类型呀,知道哪种类型了,就知道该怎么引用了
liurenmpost 2008-06-29
  • 打赏
  • 举报
回复
MyEclipse报的错:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 标准表达式中数据类型不匹配。
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)
at bean.ConnectionBean.delete(ConnectionBean.java:33)
at org.apache.jsp.usage1.dele_jsp._jspService(dele_jsp.java:81)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 标准表达式中数据类型不匹配。
jdlsfl 2008-06-29
  • 打赏
  • 举报
回复
报什么错误
jdlsfl 2008-06-29
  • 打赏
  • 举报
回复
匹配int

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧