changeset 270:926afbe567f5

Enhanced the reporting of the parameters. It now shows the name for the nullable and mode integer codes.
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Thu, 14 Mar 2019 19:45:45 +0100 (2019-03-14)
parents 9c1ecdbbd9aa
children 4880267d0fe1
files tests/Test_PSmetadata.java
diffstat 1 files changed, 46 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- 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;
+	}
 }