原语句如下:
String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id='"+tid+"'";
stmt.executeUpdate(Sql1);受不了了,还是请高手帮我解决下吧!要不崩溃了!
String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id='"+tid+"'";
stmt.executeUpdate(Sql1);受不了了,还是请高手帮我解决下吧!要不崩溃了!
root cause java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] UPDATE 语句的语法错误。
sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(Unknown Source)
org.apache.jsp.Admin.yqlj_002dgl3_jsp._jspService(yqlj_002dgl3_jsp.java:104)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.
输出来 System.out.println(sql1);然后将sql1放到数据库中执行下,看能否执行成功。
还有个比较方便的方法,直接在查询分析器里面让机器生成代码然后复制到Java程序里面去
你把最后一个引号去掉看看, 你那个Id明显是int,但是你后面的tid加了引号就变成字符串了..!先去掉看下..有问题在拿上来吧
数据库应该有事件探查器吧
打开事件探查器,侦听执行的SQL语句,然后从里面看看是什么错误
然后放进查询分析器里看看有问题没
改成
String Sql1="update ljzl set yesno='"+yesno+"+"',ljlx='"+ljlx+"' where id='"+tid+"'";
看看对不对
2、在控制台输出那条update语句
3、用‘?’占位符,然后在set进去
stmt.executeUpdate(Sql1); ID一般都是整型,加上双引号变成了字符串了,有些数据库能自动转化,ORACLE肯定不行
String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id="+tid;
这样应该比较容易找错的!
改成这样
PreparedStatement pstmt=conn.preparedStatement(sql);
pstmt.setString(1,变量1);
pstmt.setString(2,变量2);
pstmt.setString(3,变量3);
pstmt.executeUpdate();
建议使用这种方式
你看看你的ID字段
是否不需要单引号
可以打印出来 再调试
先不要传参数看看。。 再调试看看是连接问题还组合SQL语句问题
stmt.executeUpdate(Sql1); 逗号!!!
stmt.executeUpdate(Sql1);
???
stmt有create吗?
2 将stmt.executeupdate(Sql1)注释,执行检测是否有错误
3 String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id='"+tid+"'"; 执行输出,在数据库中执行,是否有错误
4 检测stmt对象是否创建成功
update ljzl yesno='"+yesno+"',ljlx='"+ljlx+"' where id='"+tid+"'";
看得我头晕..
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] UPDATE 语句的语法错误。sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(Unknown Source)
弄到sql查询分析器里面,一看就知道你的错误在哪里。
PS:
CSDN脚本的错误:网页错误详细信息用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )
时间戳: Wed, 3 Jun 2009 03:00:31 UTC
消息: 对象不支持此属性或方法
行: 71
字符: 1
代码: 0
URI: http://forum.csdn.net/PointForum/Forum/ReplyLoginSuccess.aspx
消息: 对象不支持此属性或方法
行: 71
字符: 1
代码: 0
URI: http://forum.csdn.net/PointForum/Forum/ReplyLoginSuccess.aspx
回帖处的登录窗口--》登录--》成功--》点“关闭”等字--》出现错误:登录窗口层不关闭。
浏览器:IE8
一般出现这个问题有两种原因:
第一:没有配置ODBC数据源
第二:sql语句出错有问题吗?大哥,您是高手,还请您多多指点,小弟俺洗耳恭听
update ljzl set yesno='yes',ljlx='aaa' where id='1'
这么看语法似乎没有错,只是'"+dd+"'带参数而已,是不是像楼上说的出现关键字了
看63 64 65 66楼
[/size]
stmt.executeUpdate(Sql1);如果你的ID字段是INT的 就改成String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id="+tid+"";
stmt.executeUpdate(Sql1);
ps
强调一下,不要拿自己分数高就以为自己是高手来评价别人。真正的高手一般不会来这的。我从来不认为自己是高手!呵呵
或者把你的sql打印出来,放到数据库客户端或查询分析器中执行一下,看看报啥错;
stmt.executeUpdate(Sql1); 应该就是这样子了吧,不会有错的
你把这几个变量的值输出一下,然后执行之前把sql字符串输出一下,再来检查,看看是否有特殊字符或者空值