原语句如下:
String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id='"+tid+"'";
stmt.executeUpdate(Sql1);受不了了,还是请高手帮我解决下吧!要不崩溃了!

解决方案 »

  1.   

    这两句应该没有java的语法错误.
      

  2.   

    String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id="+tid; 
      

  3.   

    异常如下:
    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.
      

  4.   

    连上了,前边我用out.print取数据库中字段测试了
      

  5.   

    tid  是字符串类型么??不是就不要加''了
      

  6.   

    将你的String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id='"+tid+"'"; 
    输出来 System.out.println(sql1);然后将sql1放到数据库中执行下,看能否执行成功。
      

  7.   

    嗯.  如果是sql的错误的话,建议输出一下,然后丢到查询分析器里面执行下  就会知道是什么错误了.
      还有个比较方便的方法,直接在查询分析器里面让机器生成代码然后复制到Java程序里面去
      

  8.   

    String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id='"+tid+"'"; 
     你把最后一个引号去掉看看,  你那个Id明显是int,但是你后面的tid加了引号就变成字符串了..!先去掉看下..有问题在拿上来吧
      

  9.   

    sql语句仍在数据库里先查着看啊,行了再把语句放到dao
      

  10.   

    这样试一下
    数据库应该有事件探查器吧
    打开事件探查器,侦听执行的SQL语句,然后从里面看看是什么错误
      

  11.   

    String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id="+ tid; 
      

  12.   

    前面的说得对,建议你把那个sql1打印出来
    然后放进查询分析器里看看有问题没
      

  13.   

    支持前面所说的,将sql1打印出来看看,这样能够容易判断一些
      

  14.   

    String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id='"+tid+"'"; 
    改成 
    String Sql1="update ljzl set yesno='"+yesno+"+"',ljlx='"+ljlx+"' where id='"+tid+"'"; 
    看看对不对 
      

  15.   

    1、先在数据库中测试一下
    2、在控制台输出那条update语句
    3、用‘?’占位符,然后在set进去
      

  16.   

    String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id='"+tid+"'"; 
    stmt.executeUpdate(Sql1); ID一般都是整型,加上双引号变成了字符串了,有些数据库能自动转化,ORACLE肯定不行
      

  17.   

    如果你的id是数字类型的,就把最后的俩单引号去掉
    String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id="+tid;
      

  18.   

    建议楼主把生成的sql语句打印出来,看看是什么错误,在数据库工具中执行试试看,工具的提示要详尽得多
      

  19.   

    把sql语句打印出来,然后放到数据库的查询分析器里运行下,看看是哪出错误了!
    这样应该比较容易找错的!
      

  20.   

    先打印sql语句,然后将sql语句复制 在数据库中运行 看是否可以查出结果!
      

  21.   

    String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id"=+tid+; 
    改成这样
      

  22.   

    String Sql1="update ljzl set yesno=?,ljlx=? where id=?; 
    PreparedStatement pstmt=conn.preparedStatement(sql);
    pstmt.setString(1,变量1);
    pstmt.setString(2,变量2);
    pstmt.setString(3,变量3);
    pstmt.executeUpdate();
    建议使用这种方式
    你看看你的ID字段
    是否不需要单引号
      

  23.   

    String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"'         where id='"+tid+"'";  
    可以打印出来 再调试
      

  24.   

    String Sql1="update ljzl set yesno=1 WHERE id='AAA'"; 
    先不要传参数看看。。 再调试看看是连接问题还组合SQL语句问题
      

  25.   

    String Sql1= "update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id='"+tid+"'"; 
    stmt.executeUpdate(Sql1); 逗号!!!
      

  26.   

    String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id='"+tid+"'"; 
    stmt.executeUpdate(Sql1); 
    ???
    stmt有create吗?
      

  27.   

    1 测试数据库连接是否正确
    2 将stmt.executeupdate(Sql1)注释,执行检测是否有错误
    3 String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id='"+tid+"'"; 执行输出,在数据库中执行,是否有错误
    4 检测stmt对象是否创建成功
      

  28.   

    如果是mysql的话是不用set的,你试试
    update ljzl yesno='"+yesno+"',ljlx='"+ljlx+"' where id='"+tid+"'"; 
      

  29.   

    楼上的高手们先看看这个贴子吧...http://topic.csdn.net/u/20090421/22/16F06A01-9688-4DC8-9352-62C82C6ADFB5.html
    看得我头晕..
      

  30.   

    把那程序执行的SQL在查询工具里执行一下,看下具体什么问题。
      

  31.   

    "+tid+"' id应该是INT的吧,外面不要但引号
      

  32.   

    update ljzl set [yesno]='yesno',ljlx='ljlx' where id='tid'可能yesno是关键字
      

  33.   

    刚在access里建了一个表,字段和你一样,报错后直接选中了yesno,说明是yesno出问题,加上[]后就OK了
      

  34.   

    mode,user ,yesno都是关键字,很容易出错
      

  35.   

    ODBC Microsoft Access Driver太差劲了
      

  36.   

    拜托大哥们都看下异常好吧:
    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) 
      

  37.   

    String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id='"+tid+"'"; ======================================== 
    弄到sql查询分析器里面,一看就知道你的错误在哪里。
      

  38.   

    yesno作为ACCESS的关键字。
    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
      

  39.   


    一般出现这个问题有两种原因:
    第一:没有配置ODBC数据源
    第二:sql语句出错有问题吗?大哥,您是高手,还请您多多指点,小弟俺洗耳恭听
      

  40.   

    建议你把你的参数的地方带入一个值,在数据库里直接update一次,看看是否对的
    update ljzl set yesno='yes',ljlx='aaa' where id='1'
    这么看语法似乎没有错,只是'"+dd+"'带参数而已,是不是像楼上说的出现关键字了
      

  41.   

    先在数据库中试一条update语句 然后再那到程序中拼接
      

  42.   

    他的并接是没问题的,主要是楼主要确认那三个字段的类型,现在你的语法是都String的,这样看语法是没问题的。带到库里执行以下看看对不对,如果对,程序里这样写是没问题的
      

  43.   

    [size=44px]
    看63 64 65 66楼
    [/size]
      

  44.   

    bcsafc sdfv   
      

  45.   

    String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id='"+tid+"'";
    stmt.executeUpdate(Sql1);如果你的ID字段是INT的 就改成String Sql1="update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id="+tid+"";
    stmt.executeUpdate(Sql1);
      

  46.   

    不知道大家怎么搞,遇到这种问题不是DEBUG到这里看SQL文吗?把SQL文拷贝出来跑一下,有错误不就知道了?
      

  47.   

    晕死,最简单的方法就是调试,看看sql文啊,再不行就运行此sql文,看看有啥问题提示
      

  48.   

    update ljzl set yesno='"+yesno+"',ljlx='"+ljlx+"' where id='"+tid+"'";    把逗号不要  换成  and 试下``Update里面我还没见过中间有逗号的``
      

  49.   

        使用了关键字yesno作为列名,所以update时候要[yesno]这样应用。这难道不是语法错误吗?不是sql语句出错吗?
    ps  
           强调一下,不要拿自己分数高就以为自己是高手来评价别人。真正的高手一般不会来这的。我从来不认为自己是高手!呵呵
      

  50.   

    打印SQL语句,然后去查询执行器里面运行看看!
      

  51.   

    同意这个,看看你数据库字段的你的类型,是否需要加单引号;
    或者把你的sql打印出来,放到数据库客户端或查询分析器中执行一下,看看报啥错;
      

  52.   

    string Sql1="update ljzl set yesno='"+ yesno +"',ljlx='"+ ljlx +"' where id='"+ tid +"'"; 
    stmt.executeUpdate(Sql1); 应该就是这样子了吧,不会有错的
      

  53.   

    会不会是表名什么都根本就不对或者字段名。。本身sql应该没什么问题。 
      

  54.   

    用输出语句输出最终生成的sql,然后复制到查询分析器中执行,看看到底是什么错,这样分析效率更高
      

  55.   

    既然楼上已经出了那么多主意还是不灵光,那么我觉得问题可能出在这几个变量的值上面!
    你把这几个变量的值输出一下,然后执行之前把sql字符串输出一下,再来检查,看看是否有特殊字符或者空值