and*_*opp 6 java postgresql scala jdbc
我正在为PostgreSQL使用官方JDBC驱动程序,但我遇到了以下问题:
所以,问题是 - 是否有任何PostgreSQL数据库驱动程序可以利用PostgreSQL的全部功能而没有太多样板?我也使用Scala语言进行开发,所以如果驱动程序是专门为Scala设计的,那就太棒了.
Yis*_*hai 10
其中一些似乎是(除非我不理解)使用JDBC时的用户错误.JDBC是一个非常丑陋的API,所以永远不要问你是否可以优雅地做到这一点,只要问你是否可以做到这一点.
正如@ColinD和@a_horse指出的那样,应该使用Prepared语句和批处理操作来处理转义和插入多行.在引擎盖下,我希望有一个很好的JDBC实现来做你想要的事情(我不熟悉PostgreSQL的实现).
关于UUID,这是一个解决方案:
PostgreSQL可以做的就是将字符串文字转换为uuid.
您可以使用数据类型org.postgresql.util.PGobject来使用它,这是一个用于表示JDBC未知的数据类型的通用类.
您可以定义一个辅助类:
Run Code Online (Sandbox Code Playgroud)public class UUID extends org.postgresql.util.PGobject { public static final long serialVersionUID = 668353936136517917L; public UUID(String s) throws java.sql.SQLException { super(); this.setType("uuid"); this.setValue(s); } }然后下面的代码将成功:
Run Code Online (Sandbox Code Playgroud)java.sql.PreparedStatement stmt = conn.prepareStatement("UPDATE t SET uid = ? WHERE id = 1"); stmt.setObject(1, new UUID("a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11")); stmt.executeUpdate();