当前位置: 首页>>代码示例>>Java>>正文


Java CallableStatement.getParameterMetaData方法代码示例

本文整理汇总了Java中java.sql.CallableStatement.getParameterMetaData方法的典型用法代码示例。如果您正苦于以下问题:Java CallableStatement.getParameterMetaData方法的具体用法?Java CallableStatement.getParameterMetaData怎么用?Java CallableStatement.getParameterMetaData使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在java.sql.CallableStatement的用法示例。


在下文中一共展示了CallableStatement.getParameterMetaData方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: testParameterParser

import java.sql.CallableStatement; //导入方法依赖的package包/类
/**
 * Tests the new parameter parser that doesn't require "BEGIN" or "\n" at
 * end of parameter declaration
 * 
 * @throws Exception
 */
public void testParameterParser() throws Exception {

    if (!versionMeetsMinimum(5, 0)) {
        return;
    }

    CallableStatement cstmt = null;

    try {

        createTable("t1", "(id   char(16) not null default '', data int not null)");
        createTable("t2", "(s   char(16),  i   int,  d   double)");

        createProcedure("foo42", "() insert into test.t1 values ('foo', 42);");
        this.conn.prepareCall("{CALL foo42()}");
        this.conn.prepareCall("{CALL foo42}");

        createProcedure("bar", "(x char(16), y int, z DECIMAL(10)) insert into test.t1 values (x, y);");
        cstmt = this.conn.prepareCall("{CALL bar(?, ?, ?)}");

        ParameterMetaData md = cstmt.getParameterMetaData();
        assertEquals(3, md.getParameterCount());
        assertEquals(Types.CHAR, md.getParameterType(1));
        assertEquals(Types.INTEGER, md.getParameterType(2));
        assertEquals(Types.DECIMAL, md.getParameterType(3));

        createProcedure("p", "() label1: WHILE @a=0 DO SET @a=1; END WHILE");
        this.conn.prepareCall("{CALL p()}");

        createFunction("f", "() RETURNS INT NO SQL return 1; ");
        cstmt = this.conn.prepareCall("{? = CALL f()}");

        md = cstmt.getParameterMetaData();
        assertEquals(Types.INTEGER, md.getParameterType(1));
    } finally {
        if (cstmt != null) {
            cstmt.close();
        }
    }
}
 
开发者ID:bragex,项目名称:the-vigilantes,代码行数:47,代码来源:CallableStatementTest.java

示例2: testBug84324

import java.sql.CallableStatement; //导入方法依赖的package包/类
/**
 * Tests fix for Bug#84324 - CallableStatement.extractProcedureName() not work when catalog name with dash.
 */
public void testBug84324() throws Exception {
    createDatabase("`testBug84324-db`");

    /*
     * Test procedure.
     */
    createProcedure("`testBug84324-db`.`testBug84324-proc`", "(IN a INT, INOUT b VARCHAR(100)) BEGIN SELECT a, b; END");

    final CallableStatement cstmtP = this.conn.prepareCall("CALL testBug84324-db.testBug84324-proc(?, ?)");
    ParameterMetaData pmd = cstmtP.getParameterMetaData();

    assertEquals(2, pmd.getParameterCount());
    // 1st parameter
    assertEquals("INT", pmd.getParameterTypeName(1));
    assertEquals(Types.INTEGER, pmd.getParameterType(1));
    assertEquals(Integer.class.getName(), pmd.getParameterClassName(1));
    assertEquals(ParameterMetaData.parameterModeIn, pmd.getParameterMode(1));
    // 2nd parameter
    assertEquals("VARCHAR", pmd.getParameterTypeName(2));
    assertEquals(Types.VARCHAR, pmd.getParameterType(2));
    assertEquals(String.class.getName(), pmd.getParameterClassName(2));
    assertEquals(ParameterMetaData.parameterModeInOut, pmd.getParameterMode(2));

    cstmtP.setInt(1, 1);
    cstmtP.setString(2, "foo");
    assertThrows(SQLException.class, new Callable<Void>() {
        public Void call() throws Exception {
            cstmtP.execute();
            return null;
        }
    }); // Although the procedure metadata could be obtained, the end query actually fails due to syntax errors.
    cstmtP.close();

    /*
     * Test function.
     */
    createFunction("`testBug84324-db`.`testBug84324-func`", "(a INT, b VARCHAR(123)) RETURNS INT BEGIN RETURN a + LENGTH(b); END");

    final CallableStatement cstmtF = this.conn.prepareCall("{? = CALL testBug84324-db.testBug84324-func(?, ?)}");
    pmd = cstmtF.getParameterMetaData();

    assertEquals(3, pmd.getParameterCount());
    // 1st parameter
    assertEquals("INT", pmd.getParameterTypeName(1));
    assertEquals(Types.INTEGER, pmd.getParameterType(1));
    assertEquals(Integer.class.getName(), pmd.getParameterClassName(1));
    assertEquals(ParameterMetaData.parameterModeOut, pmd.getParameterMode(1));
    // 2nd parameter
    assertEquals("INT", pmd.getParameterTypeName(2));
    assertEquals(Types.INTEGER, pmd.getParameterType(2));
    assertEquals(Integer.class.getName(), pmd.getParameterClassName(2));
    assertEquals(ParameterMetaData.parameterModeIn, pmd.getParameterMode(2));
    // 3rd parameter
    assertEquals("VARCHAR", pmd.getParameterTypeName(3));
    assertEquals(Types.VARCHAR, pmd.getParameterType(3));
    assertEquals(String.class.getName(), pmd.getParameterClassName(3));
    assertEquals(ParameterMetaData.parameterModeIn, pmd.getParameterMode(3));

    cstmtF.registerOutParameter(1, Types.INTEGER);
    cstmtF.setInt(2, 1);
    cstmtF.setString(3, "foo");
    assertThrows(SQLException.class, new Callable<Void>() {
        public Void call() throws Exception {
            cstmtF.execute();
            return null;
        }
    }); // Although the function metadata could be obtained, the end query actually fails due to syntax errors.
    cstmtP.close();
    cstmtF.close();
}
 
开发者ID:bragex,项目名称:the-vigilantes,代码行数:74,代码来源:CallableStatementRegressionTest.java

示例3: testBug84324

import java.sql.CallableStatement; //导入方法依赖的package包/类
/**
 * Tests fix for Bug#84324 - CallableStatement.extractProcedureName() not work when catalog name with dash.
 */
public void testBug84324() throws Exception {
    createDatabase("`testBug84324-db`");

    /*
     * Test procedure.
     */
    createProcedure("`testBug84324-db`.`testBug84324-proc`", "(IN a INT, INOUT b VARCHAR(100)) BEGIN SELECT a, b; END");

    final CallableStatement cstmtP = this.conn.prepareCall("CALL testBug84324-db.testBug84324-proc(?, ?)");
    ParameterMetaData pmd = cstmtP.getParameterMetaData();

    assertEquals(2, pmd.getParameterCount());
    // 1st parameter
    assertEquals("INT", pmd.getParameterTypeName(1));
    assertEquals(Types.INTEGER, pmd.getParameterType(1));
    assertEquals(Integer.class.getName(), pmd.getParameterClassName(1));
    assertEquals(ParameterMetaData.parameterModeIn, pmd.getParameterMode(1));
    // 2nd parameter
    assertEquals("VARCHAR", pmd.getParameterTypeName(2));
    assertEquals(Types.VARCHAR, pmd.getParameterType(2));
    assertEquals(String.class.getName(), pmd.getParameterClassName(2));
    assertEquals(ParameterMetaData.parameterModeInOut, pmd.getParameterMode(2));

    cstmtP.setInt(1, 1);
    cstmtP.setString(2, "foo");
    assertThrows(SQLException.class, new Callable<Void>() {
        public Void call() throws Exception {
            cstmtP.execute();
            return null;
        }
    }); // Although the procedure metadata could be obtained, the end query actually fails due to syntax errors.
    cstmtP.close();

    /*
     * Test function.
     */
    createFunction("`testBug84324-db`.`testBug84324-func`", "(a INT, b VARCHAR(123)) RETURNS INT DETERMINISTIC BEGIN RETURN a + LENGTH(b); END");

    final CallableStatement cstmtF = this.conn.prepareCall("{? = CALL testBug84324-db.testBug84324-func(?, ?)}");
    pmd = cstmtF.getParameterMetaData();

    assertEquals(3, pmd.getParameterCount());
    // 1st parameter
    assertEquals("INT", pmd.getParameterTypeName(1));
    assertEquals(Types.INTEGER, pmd.getParameterType(1));
    assertEquals(Integer.class.getName(), pmd.getParameterClassName(1));
    assertEquals(ParameterMetaData.parameterModeOut, pmd.getParameterMode(1));
    // 2nd parameter
    assertEquals("INT", pmd.getParameterTypeName(2));
    assertEquals(Types.INTEGER, pmd.getParameterType(2));
    assertEquals(Integer.class.getName(), pmd.getParameterClassName(2));
    assertEquals(ParameterMetaData.parameterModeIn, pmd.getParameterMode(2));
    // 3rd parameter
    assertEquals("VARCHAR", pmd.getParameterTypeName(3));
    assertEquals(Types.VARCHAR, pmd.getParameterType(3));
    assertEquals(String.class.getName(), pmd.getParameterClassName(3));
    assertEquals(ParameterMetaData.parameterModeIn, pmd.getParameterMode(3));

    cstmtF.registerOutParameter(1, Types.INTEGER);
    cstmtF.setInt(2, 1);
    cstmtF.setString(3, "foo");
    assertThrows(SQLException.class, new Callable<Void>() {
        public Void call() throws Exception {
            cstmtF.execute();
            return null;
        }
    }); // Although the function metadata could be obtained, the end query actually fails due to syntax errors.
    cstmtP.close();
    cstmtF.close();
}
 
开发者ID:rafallis,项目名称:BibliotecaPS,代码行数:74,代码来源:CallableStatementRegressionTest.java

示例4: setProcedure

import java.sql.CallableStatement; //导入方法依赖的package包/类
/**
 * @param procedure The procedure to set.
 * @param columns columns
 * @exception  Exception  Description of Exception
 */
public void setProcedure(String procedure, ArrayList columns) throws Exception {
	if (isconfigured) { return; }

	if (poolConnectionHandler != null) {
		con = poolConnectionHandler.getConnection();

		if (!isConnected()) { throw new Exception(
				"JDBCLogger::setProcedure(), Given connection isnt connected to database !"); }
	}

	this.procedure = procedure;
	// prepare call
	CallableStatement cStmt = this.createCallableStatement(columns.size());

	JDBCLogColumn logcol;

	ParameterMetaData pmd;

	// 2.6.2005 jschmied
	// ParameterMetaData is supported on different levels by Oracle
	try {
		// J2SDK 1.4+; limited support by Oracle drivers 10.x and 9.x
		pmd = cStmt.getParameterMetaData();
		num = pmd.getParameterCount();
		if (num >= 1) {
			// oracle 10.1.0.4 has some stubs in ParameterMetaData, 
			// try if a function throws a UnsupportedFeature exception
			pmd.getParameterType(1);
			pmd.getParameterTypeName(1);
			pmd.isNullable(1);
		}
	} catch (Exception e) {
		pmd = null;
		num = columns.size();
	}

	logcols = new ArrayList(num);

	for (int i = 1; i <= num; i++) {
		logcol = new JDBCLogColumn();
		JDBCColumnStorage col = (JDBCColumnStorage) columns.get(i - 1);
		logcol.name = col.column.toUpperCase();
		if (pmd == null) {
			logcol.type = col.type;
			logcol.sqlType = col.sqlType;
			logcol.nullable = true; // assume true
		} else {
			logcol.type = pmd.getParameterTypeName(i);
			logcol.sqlType = pmd.getParameterType(i);
			logcol.nullable = (pmd.isNullable(i) == ParameterMetaData.parameterNullable);
		}
		logcol.isWritable = true;
		logcols.add(logcol);
	}

	cStmt.close();
	freeConnection();

	isconfigured = true;

}
 
开发者ID:jaffa-projects,项目名称:jaffa-framework,代码行数:67,代码来源:JDBCLogger.java


注:本文中的java.sql.CallableStatement.getParameterMetaData方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。