我有一个嵌入式数据库的小应用程序。有时在尝试插入超过相应数据库列最大大小的变量时会发生截断错误。捕捉截断错误
我希望在插入/更新之前检测到这一点,并向用户显示正确的消息。
现在我认为有两种可能性来实现这一点。
通过
DatabaseMetaData
对象获取感兴趣列的最大长度。你可以通过使用Singletons或类似的构造来降低性能。保留Java代码中的最大长度(例如:在
ResourceBundle
或Properties
文件中)并检查这些值。 Java代码和数据库必须保持同步,这是不利的。这是容易出错的。
什么是最好的方法?
关于“性能缺乏”的担忧:*不要过早优化*没有人应该更新具有列长度的系统表,并且数据库应该缓存这些东西(毕竟,数据库使用此信息来验证)。如果你真的担心,在你决定编写代码解决它之前,创建一个测试并测量问题的严重程度。 – 2011-05-11 14:40:46
听起来像你已经暗示自己,选项#2是容易出错的。如果你需要某人告诉你你是对的,那么......你是对的!我会避免选项#2,因为它为同一条数据提供了两个权威来源,这绝不是胜利的情况。 – 2011-05-11 20:15:24