postgresql数据库中与jdbc进行通信的格式有二进制方式和文本方式。二进制方式这是针对某些数据类型而言的。那么如果想只通过文本方式来进行通信,怎么解决了。下面提供了一段建立连接的方式,可以禁止jdbc通过二进制与postgresql进行通信。
private void disableBinary(Properties info) {
int[] disableType = {Oid.BYTEA, Oid.INT2, Oid.INT4, Oid.INT8, Oid.FLOAT4, Oid.FLOAT8, Oid.TIME, Oid.DATE, Oid.TIMETZ,
Oid.TIMESTAMP, Oid.TIMESTAMPTZ, Oid.INT2_ARRAY, Oid.INT4_ARRAY, Oid.INT8_ARRAY, Oid.FLOAT4_ARRAY, Oid.FLOAT8_ARRAY,
Oid.VARCHAR_ARRAY, Oid.TEXT_ARRAY, Oid.POINT, Oid.BOX, Oid.UUID};
String dstring = null;
int i = 0;
for (i = 0; i < disableType.length; ++i) {
if (i > 0)
dstring = dstring + ",";
if (dstring == null) {
dstring = String.valueOf(disableType[i]);
} else {
dstring = dstring + String.valueOf(disableType[i]);
}
}
PGProperty.BINARY_TRANSFER_DISABLE.set(info, dstring);
}
public void SelectUser() {
Connection conn = null;
String url = "jdbc:postgresql://172.30.12.10:1999/pgbench";
String username = "db_user";
String password = "0000";
try {
Class.forName("org.postgresql.Driver").newInstance();
java.util.Properties info = new java.util.Properties();
info.setProperty("user", username);
info.setProperty("password", password);
disableBinary(info);
conn = DriverManager.getConnection(url, info);
在上面代码中disableBinary函数禁止了所有jdbc中指定二进制进行通信的数据类型。这样建立的连接就只会通过文本进行通信了。
上面的disableBinary函数中的代码也可以使用一句代码来完成:PGProperty.BINARY_TRANSFER.set(info, false)。这句代码就可以把jdbc中所有的数据类型都指定为使用文本进行通信。