我直接从 Java 应用程序使用 JDBC
PreparedStatement
,例如:
stmt = connection.prepareStatement("SELECT mycolumn FROM mytable WHERE ...");
...
String mycolumn = stmt.getString("mycolumn");
mycolumn
的类型是UNIQUEIDENTIFIER
。这是 Microsoft SQL Server 支持的 128 位二进制数据类型,表示 UUID,会自动转换为字符串。
问题是,我想以小写形式检索该字符串。将 C# 与实体框架结合使用时,字符串始终为小写(如文档中所示)。但是,在 JDBC 中(使用 Microsoft 最新的 JDBC 驱动程序),它始终以大写形式显示。
我可以解决这个问题,例如
connection.prepareStatement("SELECT lower(mycolumn) FROM mytable WHERE ...")
但这会降低效率(这是一个对性能至关重要的应用程序),因为数据以字符串形式(36 字节 + 开销)而不是 16 字节二进制数传入。
另一种解决方法:
stmt.getString("mycolumn").toLowercase()
但这比必要的处理更多,因为二进制数首先转换为大写,然后转换为小写。
有没有一个选项可以让
getString
方法直接返回小写字符串?
您是否考虑过使用
getBytes
而不是 getString
?如果您对 Java 将 UNIQUEIDENTIFER 转换为字符串的方式不满意,请提供您自己的实现。