[問題] 關於jdbc的executeUpdate()所回傳的值

看板java作者 (Risker)時間14年前 (2011/12/24 20:02), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串1/1
又來打擾各位了,這幾天用了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)

12/24 21:43, , 1F
吃個飯看個電視回來忽然發現我可以自問自答了...
12/24 21:43, 1F

12/24 21:45, , 2F
ObjectOutputStream在flush()之後再reset()就可以ok.
12/24 21:45, 2F

12/24 21:47, , 3F
至於原因還在研究,也不清楚是否會發生其他問題~"~
12/24 21:47, 3F

12/24 21:52, , 4F
怪怪的,其他欄位都正確只有這個值會出錯...
12/24 21:52, 4F
文章代碼(AID): #1EzRzEjs (java)