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

QQ登录

只需一步,快速开始

查看: 2345|回复: 10

[结贴] sql执行报错

[复制链接]

75

主题

280

帖子

495

积分

中级会员

Rank: 3Rank: 3

积分
495
QQ
发表于 2014-9-10 18:39:34 | 显示全部楼层 |阅读模式
21231231231235.jpg 我把那句sql直接放到数据库里执行,就没有报错,正常执行了,但是在x5里就一直报错,虽然报错但是数据库里也能插入数据。。这是为什么?
  1. update TB_SHIPNAME_TJ_ABS set TTL_BZH='333',HT_BZH='222',QKSM='111',INSERT_DATE= sysdate,INSERT_USERNAME='3#',INSERT_USERID='35CF72AD5FCA44BBA375A841473D15EC' where CBTZDID='1CB10002207'
复制代码
这是那条sql

310

主题

4938

帖子

4767

积分

论坛元老

Rank: 8Rank: 8

积分
4767
QQ
发表于 2014-9-12 13:41:47 | 显示全部楼层
qxdperfect 发表于 2014-9-12 12:08
你好,麻烦在给我看看吧,还没有解决啊,明明都执行了,为什么还报错了?数据库的值都变了啊,到底哪错了 ...

更新这段sql语句,执行的时候你改成SQL.executeUpdate试试

评分

参与人数 1 +6 收起 理由
jishuang + 6 赞一个!

查看全部评分

QQ:179785966
回复 支持 反对

使用道具 举报

发表于 2014-9-10 18:52:17 | 显示全部楼层
把整个后台代码发上来看看呢
回复 支持 反对

使用道具 举报

45

主题

4492

帖子

3960

积分

论坛元老

Rank: 8Rank: 8

积分
3960
QQ
发表于 2014-9-10 23:00:53 | 显示全部楼层
嗯。从你的SQL语句上看是没有问题的,你写的这个SQL语句,是在那里执行的呢?
是ACTION中吗,要ACTION中是以SQL的方式去执行还是以KSQL的方式去执行。

若你是KSQL的方式去执行,那是不对的,不SQL语句不是KSQL,两者是有区别的;
关于KSQL的写法你可以参考 API操作手册;

ORA 00900 错误,应该是你SQL语句有问题,你检查一下是不是 逗号是全角的,换一下逗号试试,
再就是 where 关键字两边是需要加空格的,是不是在语句中 少了右侧的空格;
还有数据库中字段的类型是否与值的类型一致;
向前进,向前进,我们……
回复 支持 反对

使用道具 举报

75

主题

280

帖子

495

积分

中级会员

Rank: 3Rank: 3

积分
495
QQ
 楼主| 发表于 2014-9-11 08:04:18 | 显示全部楼层
fpj 发表于 2014-9-10 23:00
嗯。从你的SQL语句上看是没有问题的,你写的这个SQL语句,是在那里执行的呢?
是ACTION中吗,要ACTION中是 ...

我用的oracle数据库,执行的是SQL,我把那条语句放到toad里执行没问题,但是x5莫名其妙的报错,如果符号有错,在toad里也没法执行啊
回复 支持 反对

使用道具 举报

75

主题

280

帖子

495

积分

中级会员

Rank: 3Rank: 3

积分
495
QQ
 楼主| 发表于 2014-9-11 08:05:20 | 显示全部楼层
lanware_smf 发表于 2014-9-10 18:52
把整个后台代码发上来看看呢
  1. public static String Update_CM_Data(String CBTZDID,String TTL_BZH,String HT_BZH,String QKSM){
  2.                 String sqlselect="select count(*) as count1 from TB_SHIPNAME_TJ_ABS a where a.CBTZDID='"+CBTZDID+"'";
  3.                 String username=ContextHelper.getPerson().getName();
  4.                 String userid=ContextHelper.getPerson().getID();
  5.                 String guids=com.justep.system.util.CommonUtils.createGUID();
  6.          
  7.                  Map<String,String> maps=new HashMap<String,String>();
  8.                  maps.put(DatabaseProduct.ORACLE.name(), sqlselect);
  9.                  int count2=0;//返回是否成功
  10.                  int count=Integer.parseInt(SQL.select(maps, null, "/production/business/yulang/ttjhltj/data").iterator().next().getDecimal(0).toString());
  11.                  if(count==0){//没有数据就添加insert
  12.                          String sqlInsert="insert into TB_SHIPNAME_TJ_ABS( CBTZDID,TTL_BZH,HT_BZH,QKSM,INSERT_DATE,INSERT_USERNAME,INSERT_USERID) values ('"+CBTZDID+"','"+TTL_BZH+"','"+HT_BZH+"','"+QKSM+"',sysdate,'"+username+"','"+userid+"')";
  13.                          Map<String,String> maps1=new HashMap<String,String>();
  14.                          maps1.put(DatabaseProduct.ORACLE.name(), sqlInsert);
  15.                          count2= Integer.parseInt(SQL.select(maps1, null, "/production/business/yulang/ttjhltj/data").iterator().next().getDecimal(0).toString());
  16.                          
  17.                  }else{//有数据就更新
  18.                          
  19.                          String sqlUpdate="update TB_SHIPNAME_TJ_ABS set TTL_BZH='"+TTL_BZH+"',HT_BZH='"+HT_BZH+"',QKSM='"+QKSM+"',INSERT_DATE=sysdate,INSERT_USERNAME='"+username+"',INSERT_USERID='"+userid+"' where CBTZDID='"+CBTZDID+"'";
  20.                          Map<String,String> maps2=new HashMap<String,String>();
  21.                          maps2.put(DatabaseProduct.ORACLE.name(), sqlUpdate);
  22.                          count2=Integer.parseInt(SQL.select(maps2, null, "/production/business/yulang/ttjhltj/data").iterator().next().getDecimal(0).toString());
  23.                  }
  24.                  if(count2>0){
  25.                          
  26.                          return "'flag':true";
  27.                  }else{
  28.                          
  29.                          return "'flag':false";
  30.                  }
  31.                  
  32.         }
复制代码
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2014-9-11 09:41:52 | 显示全部楼层
自己用java写看看,ora-00900: 无效 sql 语句这个错误是oracle报错的,不是x5报错的
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

75

主题

280

帖子

495

积分

中级会员

Rank: 3Rank: 3

积分
495
QQ
 楼主| 发表于 2014-9-12 12:08:43 来自手机 | 显示全部楼层
jishuang 发表于 2014-9-11 09:41
自己用java写看看,ora-00900: 无效 sql 语句这个错误是oracle报错的,不是x5报错的 ...

你好,麻烦在给我看看吧,还没有解决啊,明明都执行了,为什么还报错了?数据库的值都变了啊,到底哪错了?
回复 支持 反对

使用道具 举报

45

主题

4492

帖子

3960

积分

论坛元老

Rank: 8Rank: 8

积分
3960
QQ
发表于 2014-9-12 13:47:27 | 显示全部楼层
qxdperfect 发表于 2014-9-12 12:08
你好,麻烦在给我看看吧,还没有解决啊,明明都执行了,为什么还报错了?数据库的值都变了啊,到底哪错了 ...

KSQL.select  是查询数据

KSQL.executeUpdate 是更新数据操作

你可以参考下面的贴子
http://bbs.justep.com/forum.php? ... ht=Integer.parseInt

评分

参与人数 1 +5 收起 理由
jishuang + 5 赞一个!

查看全部评分

向前进,向前进,我们……
回复 支持 反对

使用道具 举报

75

主题

280

帖子

495

积分

中级会员

Rank: 3Rank: 3

积分
495
QQ
 楼主| 发表于 2014-9-12 14:18:00 | 显示全部楼层
本帖最后由 qxdperfect 于 2014-9-12 14:22 编辑
fpj 发表于 2014-9-12 13:47
KSQL.select  是查询数据

KSQL.executeUpdate 是更新数据操作

找到原因了,多谢!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 15:15 , Processed in 0.100566 second(s), 33 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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