起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4771|回复: 9

[结贴] sql update 语句 求助

[复制链接]

87

主题

250

帖子

650

积分

高级会员

Rank: 4

积分
650
QQ
发表于 2017-7-23 22:13:20 | 显示全部楼层 |阅读模式
版本: BeX5V3.5 小版本号:
数据库: MySQL 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: Windows 其它 浏览器: IE10
本帖最后由 zzqqstc 于 2017-7-23 22:30 编辑

action 最后执行一下sql语句出错
update SA_Task t set t.sStatusID='tesFinished',t.sStatusName='已完成',t.sExpectStartTime="2017-07-23 21:39:12.517" where t="3baaaec36ce111e7b55700ffb0ebc54b"
/* SQL错误(1054):Unknown column 't' in 'where clause' */

我改成了  t.sID  好像也不行  java代码 以及 控制台的错误输出如下:

Java代码:
  sql = "update SA_Task t set t.sStatusID='tesFinished',t.sStatusName='已完成',t.sExpectStartTime = :currentDate where t.sID="
     + taskID;
  Map<String, Object> param = new HashMap<String, Object>();
  param.put("currentDate", CommonUtils.getCurrentDateTime());
  System.out.println("\nsql --- " + sql);
  System.out.println("\nparams - " + param);
  count = KSQL.executeUpdate(sql, param, sysDataModel, null);


控制台输出:
sql --- update SA_Task t set t.sStatusID='tesFinished',t.sStatusName='已完成',t.
sExpectStartTime = :currentDate where t.sID="3baaaec36ce111e7b55700ffb0ebc54b"
params - {currentDate=2017-07-23 22:19:09.407}
2017-07-23 22:19:09 excute stream action, params:{process=/OA/survey/process/sur
veyAnswer/surveyAnswerProcess, activity=surveyAnswerActivity, action=commitSurve
y, parameters={taskID="3baaaec36ce111e7b55700ffb0ebc54b"}}
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at com.justep.system.action.Engine.invokeActions(Native Method)
        at com.justep.system.action.Engine.invokeActions(Unknown Source)
        at com.justep.business.server.BusinessServer.doAction(Unknown Source)
        at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
        at com.justep.business.server.BusinessServer.excute(Unknown Source)
        at com.justep.business.server.BusinessServer.excuteGETAction(Unknown Sou
rce)
        at com.justep.business.server.BusinessServer.excuteGETAction(Unknown Sou
rce)
        at com.justep.business.server.BusinessServerServlet.execService(Unknown
Source)
        at com.justep.business.server.BusinessServerServlet.service(Unknown Sour
ce)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:861)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ss(Http11Protocol.java:606)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:48
9)
        at java.lang.Thread.run(Thread.java:745)
Caused by: com.justep.exception.BusinessException: 编码: JUSTEP150210; 提示: 执
行KSQL出错, KSQL: update SA_Task t set t.sStatusID='tesFinished',t.sStatusName='
已完成',t.sExpectStartTime = :currentDate where t.sID="3baaaec36ce111e7b55700ffb
0ebc54b"
        at com.justep.exception.BusinessException.create(Unknown Source)
        at com.justep.system.data.impl.TableUtilsImplement.ksqlUpdate(Unknown So
urce)
        at com.justep.system.data.impl.TableUtilsImplement.ksqlExecuteUpdate(Unk
nown Source)
        at com.justep.system.data.KSQL.executeUpdate(Unknown Source)
        at com.justep.system.data.KSQL.executeUpdate(Unknown Source)
        at com.justep.system.data.KSQL.executeUpdate(Unknown Source)
        at Survey.commitSurvey(Survey.java:436)
        ... 28 more
Caused by: com.justep.exception.KSQLException: 编码: JUSTEP154046; 提示: KSQL语
法错误, te where t.sID=^^"3baaaec36ce111中未找到需要的元素, 位置113期望是以下元
素之一:STRING, NUMBER, ONE_RELATION, IDENTIFER, VARIABLE
        at com.justep.exception.KSQLException.create(Unknown Source)
        at com.justep.system.ksql.parser.AbstractParser.constExpression(Unknown
Source)
        at com.justep.system.ksql.parser.AbstractParser.unaryExpression(Unknown
Source)
        at com.justep.system.ksql.parser.AbstractParser.multiExpression(Unknown
Source)
        at com.justep.system.ksql.parser.AbstractParser.addExpression(Unknown So
urce)
        at com.justep.system.ksql.parser.AbstractParser.compExpression(Unknown S
ource)
        at com.justep.system.ksql.parser.AbstractParser.notExpression(Unknown So
urce)
        at com.justep.system.ksql.parser.AbstractParser.andExpression(Unknown So
urce)
        at com.justep.system.ksql.parser.AbstractParser.orExpression(Unknown Sou
rce)
        at com.justep.system.ksql.parser.AbstractParser.conditionExpression(Unkn
own Source)
        at com.justep.system.ksql.parser.AbstractParser.whereExpression(Unknown
Source)
        at com.justep.system.ksql.parser.UpdateParser.start(Unknown Source)
        at com.justep.system.ksql.parser.AbstractParser.parse(Unknown Source)
        ... 34 more



0

主题

50

帖子

459

积分

中级会员

Rank: 3Rank: 3

积分
459
QQ
发表于 2017-7-24 09:14:17 | 显示全部楼层
数据库查询语句字符串使用''拼接,正确应该为sql = "update SA_Task t set t.sStatusID='tesFinished',t.sStatusName='已完成',t.sExpectStartTime = :currentDate where t = '"
     + taskID + "'";
回复 支持 反对

使用道具 举报

87

主题

250

帖子

650

积分

高级会员

Rank: 4

积分
650
QQ
 楼主| 发表于 2017-7-31 10:41:01 | 显示全部楼层
十一 发表于 2017-7-24 09:14
数据库查询语句字符串使用''拼接,正确应该为sql = "update SA_Task t set t.sStatusID='tesFinished',t.sS ...

照你的改了,但还是不对,我看了数据库里没有更新过来,是不是还有哪里不对?

以下是console的反馈:
sql --- update SA_Task t set t.sStatusID='tesFinished',t.sStatusName='已完成',t.
sExpectStartTime = :currentDate where t = '"3baaaec36ce111e7b55700ffb0ebc54b"'

params - {currentDate=2017-07-31 10:32:16.924}

以下是代码,已经照你说的改过来了:
                sql = "update SA_Task t set t.sStatusID='tesFinished',t.sStatusName='已完成',t.sExpectStartTime = :currentDate where t = '"
                             + taskID + "'";
                Map<String, Object> param = new HashMap<String, Object>();
                param.put("currentDate", CommonUtils.getCurrentDateTime());
                System.out.println("\nsql --- " + sql);
                System.out.println("\nparams - " + param);
                count = KSQL.executeUpdate(sql, param, sysDataModel, null);
                System.out.print("affect " + count + " rows\n");
               
                sql = "update OA_VS_Survey s set s.fSState='已完成',s.fFinishTime= :currentDate where s.fTaskID='" + taskID + "'";
                Map<String, Object> param1 = new HashMap<String, Object>();
                param1.put("currentDate", CommonUtils.getCurrentDateTime());
                KSQL.executeUpdate(sql, param1, OADataModel, null);
affect 0 rows
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35878
发表于 2017-7-31 11:10:25 | 显示全部楼层
不对发tomcat控制台的完整错误信息啊
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

0

主题

50

帖子

459

积分

中级会员

Rank: 3Rank: 3

积分
459
QQ
发表于 2017-7-31 11:13:59 | 显示全部楼层
zzqqstc 发表于 2017-7-31 10:41
照你的改了,但还是不对,我看了数据库里没有更新过来,是不是还有哪里不对?

以下是console的反馈:

控制台是否报错
回复 支持 反对

使用道具 举报

87

主题

250

帖子

650

积分

高级会员

Rank: 4

积分
650
QQ
 楼主| 发表于 2017-7-31 11:14:12 | 显示全部楼层
本帖最后由 zzqqstc 于 2017-7-31 11:15 编辑
jishuang 发表于 2017-7-31 11:10
不对发tomcat控制台的完整错误信息啊

affect 0 rows
2017-07-31 10:45:54 开始-WINDOW生成中间文件: /UI2/portal/pc/index.w
2017-07-31 10:45:54 结束-WINDOW生成中间文件: /UI2/portal/pc/index.w
2017-07-31 10:45:54 开始-中间文件生成缓存文件: /UI2/portal/pc/index.w
2017-07-31 10:45:54 结束-中间文件生成缓存文件: /UI2/portal/pc/index.w
2017-07-31 10:45:54 卸载模块 /OA/survey/logic/code ....
2017-07-31 10:45:54 卸载模块 /OA/survey/logic/code 结束
2017-07-31 10:45:55 开始-WINDOW生成中间文件: /UI2/portal/base/login/login.w
2017-07-31 10:45:55 结束-WINDOW生成中间文件: /UI2/portal/base/login/login.w
2017-07-31 10:45:55 开始-中间文件生成缓存文件: /UI2/portal/base/login/login.w
2017-07-31 10:45:55 结束-中间文件生成缓存文件: /UI2/portal/base/login/login.w
2017-07-31 10:45:56 编码: JUSTEP002005; 提示: 没有找到/UI2/OA/survey/process/sur
veySend/surveyPaperDetailView.a对应的页面
com.justep.ui.exception.UIException: 编码: JUSTEP002005; 提示: 没有找到/UI2/OA/s
urvey/process/surveySend/surveyPaperDetailView.a对应的页面
        at com.justep.ui.exception.UIException.create(Unknown Source)
        at com.justep.ui.ActivityServer.getWindowURLByA(Unknown Source)
        at com.justep.ui.system.service.permission.FunctionTree.processAURL(Unkn
own Source)
        at com.justep.ui.system.service.permission.FunctionTree.processAURL(Unkn
own Source)
        at com.justep.ui.system.service.permission.FunctionTree.processAURL(Unkn
own Source)
        at com.justep.ui.system.service.permission.FunctionTree.processAURL(Unkn
own Source)
        at com.justep.ui.system.service.permission.FunctionTree.processAURL(Unkn
own Source)
        at com.justep.ui.system.service.permission.FunctionTree.toResult(Unknown
Source)
        at com.justep.ui.system.service.permission.FunctionTree.doExecute(Unknow
n Source)
        at com.justep.ui.system.service.permission.FunctionTree.execute(Unknown
Source)
        at com.justep.ui.util.UIUtils.getWindowContext(Unknown Source)
        at Login.execute(Login.java:101)
        at com.justep.ui.JavaServer.runJava(Unknown Source)
        at com.justep.ui.JavaServer.doJ(Unknown Source)
        at com.justep.ui.JavaServer.service(Native Method)
        at com.justep.ui.servlet.MainServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
        at com.justep.portal.filter.RedirectFilter.doFilter(Unknown Source)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:861)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ss(Http11Protocol.java:606)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:48
9)
        at java.lang.Thread.run(Thread.java:745)
2017-07-31 10:45:56 开始-WINDOW生成中间文件: /UI2/portal/pc/main/main.w
2017-07-31 10:45:56 结束-WINDOW生成中间文件: /UI2/portal/pc/main/main.w
2017-07-31 10:45:56 开始-中间文件生成缓存文件: /UI2/portal/pc/main/main.w
2017-07-31 10:45:56 结束-中间文件生成缓存文件: /UI2/portal/pc/main/main.w
2017-07-31 10:45:57 开始-WINDOW生成中间文件: /UI2/SA/task/taskView/waitActivity.
w
2017-07-31 10:45:57 结束-WINDOW生成中间文件: /UI2/SA/task/taskView/waitActivity.
w
2017-07-31 10:45:57 开始-中间文件生成缓存文件: /UI2/SA/task/taskView/waitActivit
y.w
2017-07-31 10:45:57 结束-中间文件生成缓存文件: /UI2/SA/task/taskView/waitActivit
y.w
2017-07-31 10:45:57 开始-WINDOW生成中间文件: /UI2/portal/base/plugin/iframeFunc.
w
2017-07-31 10:45:57 结束-WINDOW生成中间文件: /UI2/portal/base/plugin/iframeFunc.
w
2017-07-31 10:45:57 开始-中间文件生成缓存文件: /UI2/portal/base/plugin/iframeFun
c.w
2017-07-31 10:45:58 结束-中间文件生成缓存文件: /UI2/portal/base/plugin/iframeFun
c.w
2017-07-31 10:45:58 开始-WINDOW生成中间文件: /UI2/SA/task/taskView/submitActivit
y.w
2017-07-31 10:45:58 excute stream action, params:{"accept":"application/json","a
ction":"openActivityAction","actionFlag":"__action_0__","activity":"","contentTy
pe":"application/json","executeContext":"","executor":"","parameters":{},"proces
s":""}
com.justep.exception.BusinessException: 编码: JUSTEP050006; 提示: 参数"fullName"
不允许为空
        at com.justep.exception.BusinessException.create(Unknown Source)
        at com.justep.util.Utils.check(Unknown Source)
        at com.justep.model.ModelUtils.getModelObjectByFullName(Unknown Source)
        at com.justep.system.action.Engine.invokeActions(Native Method)
        at com.justep.system.action.Engine.invokeActions(Unknown Source)
        at com.justep.business.server.BusinessServer.doAction(Unknown Source)
        at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
        at com.justep.business.server.BusinessServer.excute(Unknown Source)
        at com.justep.business.server.BusinessServer.excute(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.execService(Unknown
Source)
        at com.justep.business.server.BusinessServerServlet.service(Unknown Sour
ce)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:861)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ss(Http11Protocol.java:606)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:48
9)
        at java.lang.Thread.run(Thread.java:745)
paperID =null--task=3baaaec36ce111e7b55700ffb0ebc54b--surveyID=null
2017-07-31 10:45:58 加载模块:/OA/survey/process/surveyAnswer ...
2017-07-31 10:45:58 加载模块:/OA/survey/logic/action ...
2017-07-31 10:45:58 加载模块:/OA/survey/logic/code ...
  Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor
2017-07-31 10:45:58 结束-WINDOW生成中间文件: /UI2/SA/task/taskView/submitActivit
y.w
2017-07-31 10:45:58 开始-中间文件生成缓存文件: /UI2/SA/task/taskView/submitActiv
ity.w
2017-07-31 10:45:59 结束-中间文件生成缓存文件: /UI2/SA/task/taskView/submitActiv
ity.w
run commitSurvey --- "3baaaec36ce111e7b55700ffb0ebc54b"

sql --- update SA_Task t set t.sStatusID='tesFinished',t.sStatusName='已完成',t.
sExpectStartTime = :currentDate where t='"3baaaec36ce111e7b55700ffb0ebc54b"'

params - {currentDate=2017-07-31 10:46:01.987}
affect 0 rows

这就是tomcat的全部信息,看不出哪里有什么不对。最后点击按钮提交,就是输出末尾五行的信息,看不出有啥异常。

回复 支持 反对

使用道具 举报

87

主题

250

帖子

650

积分

高级会员

Rank: 4

积分
650
QQ
 楼主| 发表于 2017-7-31 11:22:40 | 显示全部楼层
在数据库管理工具里,将sql代码填入,执行也是有问题。这个写法应该是很标准的啊。
QQ图片20170731112054.png
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35878
发表于 2017-7-31 11:37:55 | 显示全部楼层
1.发的控制台的错误信息,跟执行的sql无关
2.不能直接要ksql到数据库中执行
  数据库中把where条件中的t改为主键字段
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

0

主题

50

帖子

459

积分

中级会员

Rank: 3Rank: 3

积分
459
QQ
发表于 2017-7-31 11:55:05 | 显示全部楼层
zzqqstc 发表于 2017-7-31 11:14
affect 0 rows
2017-07-31 10:45:54 开始-WINDOW生成中间文件: /UI2/portal/pc/index.w
2017-07-31 10:45: ...

看到你有取回受影响的行数,确认数据是否存在?
回复 支持 反对

使用道具 举报

87

主题

250

帖子

650

积分

高级会员

Rank: 4

积分
650
QQ
 楼主| 发表于 2017-7-31 14:46:00 | 显示全部楼层
sql --- update SA_Task t set t.sStatusID='tesFinished',t.sStatusName='已完成',t.
sExpectStartTime = :currentDate where t='"3baaaec36ce111e7b55700ffb0ebc54b"'

params - {currentDate=2017-07-31 10:46:01.987}
affect 0 rows

结贴吧,就是多了一对 "" 号
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-3-29 09:31 , Processed in 0.121159 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表