我有一個嵌入式數據庫的小應用程序。有時在嘗試插入超過相應數據庫列最大大小的變量時會發生截斷錯誤。捕捉截斷錯誤
我希望在插入/更新之前檢測到這一點,並向用戶顯示正確的消息。
現在我認爲有兩種可能性來實現這一點。
通過
DatabaseMetaData
對象獲取感興趣列的最大長度。你可以通過使用Singletons或類似的構造來降低性能。保留Java代碼中的最大長度(例如:在
ResourceBundle
或Properties
文件中)並檢查這些值。 Java代碼和數據庫必須保持同步,這是不利的。這是容易出錯的。
什麼是最好的方法?
關於「性能缺乏」的擔憂:*不要過早優化*沒有人應該更新具有列長度的系統表,並且數據庫應該緩存這些東西(畢竟,數據庫使用此信息來驗證)。如果你真的擔心,在你決定編寫代碼解決它之前,創建一個測試並測量問題的嚴重程度。 – 2011-05-11 14:40:46
聽起來像你已經暗示自己,選項#2是容易出錯的。如果你需要某人告訴你你是對的,那麼......你是對的!我會避免選項#2,因爲它爲同一條數據提供了兩個權威來源,這絕不是勝利的情況。 – 2011-05-11 20:15:24