# HG changeset patch # User Martin van Dinther <martin.van.dinther@monetdbsolutions.com> # Date 1552589145 -3600 # Node ID 926afbe567f5466139a737c32d37b22e4a8d1a57 # Parent 9c1ecdbbd9aa4d2285feab760e48edb2be074412 Enhanced the reporting of the parameters. It now shows the name for the nullable and mode integer codes. diff --git a/tests/Test_PSmetadata.java b/tests/Test_PSmetadata.java --- a/tests/Test_PSmetadata.java +++ b/tests/Test_PSmetadata.java @@ -58,19 +58,7 @@ public class Test_PSmetadata { System.out.println("\twritable " + rsmd.isWritable(col)); } - pmd = pstmt.getParameterMetaData(); - System.out.println("1. 1 parameter:\t" + pmd.getParameterCount()); - for (int col = 1; col <= pmd.getParameterCount(); col++) { - System.out.println("" + col + "."); - System.out.println("\tnullable " + pmd.isNullable(col)); - System.out.println("\tsigned " + pmd.isSigned(col)); - System.out.println("\tprecision " + pmd.getPrecision(col)); - System.out.println("\tscale " + pmd.getScale(col)); - System.out.println("\ttype " + pmd.getParameterType(col)); - System.out.println("\ttypename " + pmd.getParameterTypeName(col)); - System.out.println("\tclassname " + pmd.getParameterClassName(col)); - System.out.println("\tmode " + pmd.getParameterMode(col)); - } + showParams(pstmt); } catch (SQLException e) { System.out.println("failed :( "+ e.getMessage()); System.out.println("ABORTING TEST!!!"); @@ -79,4 +67,49 @@ public class Test_PSmetadata { con.rollback(); con.close(); } + + // some utility methods for showing table content and params meta data + static void showParams(PreparedStatement stmt) { + try { + ParameterMetaData pmd = stmt.getParameterMetaData(); + System.out.println(pmd.getParameterCount() + " parameters reported:"); + for (int parm = 1; parm <= pmd.getParameterCount(); parm++) { + System.out.print(parm + "."); + int nullable = pmd.isNullable(parm); + System.out.println("\tnullable " + nullable + " (" + paramNullableName(nullable) + ")"); + System.out.println("\tsigned " + pmd.isSigned(parm)); + System.out.println("\tprecision " + pmd.getPrecision(parm)); + System.out.println("\tscale " + pmd.getScale(parm)); + System.out.println("\ttype " + pmd.getParameterType(parm)); + System.out.println("\ttypename " + pmd.getParameterTypeName(parm)); + System.out.println("\tclassname " + pmd.getParameterClassName(parm)); + int mode = pmd.getParameterMode(parm); + System.out.println("\tmode " + mode + " (" + paramModeName(mode) + ")"); + } + } catch (SQLException e) { + System.out.println("showParams failed: " + e.getMessage()); + } + } + + static String paramNullableName(int nullable) { + if (nullable == ParameterMetaData.parameterNoNulls) + return "NO"; + if (nullable == ParameterMetaData.parameterNullable) + return "YA"; + if (nullable == ParameterMetaData.parameterNullableUnknown) + return "UNKNOWN"; + return "INVALID" + nullable; + } + + static String paramModeName(int mode) { + if (mode == ParameterMetaData.parameterModeIn) + return "IN"; + if (mode == ParameterMetaData.parameterModeInOut) + return "INOUT"; + if (mode == ParameterMetaData.parameterModeOut) + return "OUT"; + if (mode == ParameterMetaData.parameterModeUnknown) + return "UNKNOWN"; + return "INVALID" + mode; + } }