作者risker760915 (Risker)
看板java
标题[问题] 关於jdbc的executeUpdate()所回传的值
时间Sat Dec 24 20:02:19 2011
又来打扰各位了,这几天用了jdbc去使用mysql,最近遇到一些问题了...
首先,介绍操作环境:
1.client server的模式,使用ObjectOutputStream、ObjectOutputStream
2.使用Serializable物件来包装client server所传递的资料,其内部用String Array来存
放所有资料&资讯
3.client端是用来表现资料以及让使用者修改资料,当使用者在client端的UI上操作的时
候client端会把使用者的操作组成合理的sql指令,之後再包装到一个Serializable物件
里面,然後把这个Serializable物件传给server端
4.server端用来实际存取资料库,当server端收到client传过来的物件後从中取出包在里
面的sql指令,然後依指令存取资料库,最後再把结果包装到Serializable物件里面,然
後把这个物件回传给client端
5.最後client端在依照收到的结果去判断sql的执行状况以及其他处理
-------------------------------------------------------------------------------
状况说明:
int result = statement.executeUpdate(cmd);
原本测试的方法是事先在mysql里直接建好资料再去测试SELECT、INSERT、DELETE、UPDATE
这些基本指令,到这边都很顺利,指令都正常执行,但是当我测试到把资料表清空之後再
用我写的UI去新增资料时才发现了一个问题,按照我所查到的资料是说 executeUpdate()
执行之後回传的是一个int,这个int所代表的是影响到的资料笔数,当我在server端print
的时候result的值一直都是1(因为我每次都只动一笔资料),但是当我把这个result的值送
到client端後再print出来的话他就会变成"资料表执行sql指令前已有的资料数",简单的
说假如我 INSERT/DELETE/UPDATE 前存在7笔资料的话,执行完之後server端一律都print
出"1",但是client都会print出"7",请问是哪边出问题?还是我对他result的理解有错误?
麻烦各位帮帮忙了,因为这个回传的result值会影响到我client判断指令执行状况以及後
续的处理,谢谢各位~~~感恩~!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.170.33.236
※ 编辑: risker760915 来自: 118.170.33.236 (12/24 20:05)
1F:→ risker760915:吃个饭看个电视回来忽然发现我可以自问自答了... 12/24 21:43
2F:→ risker760915:ObjectOutputStream在flush()之後再reset()就可以ok. 12/24 21:45
3F:→ risker760915:至於原因还在研究,也不清楚是否会发生其他问题~"~ 12/24 21:47
4F:→ risker760915:怪怪的,其他栏位都正确只有这个值会出错... 12/24 21:52