host java_Java NonRegisteringDriver.host方法代码示例

import com.mysql.jdbc.NonRegisteringDriver; //导入方法依赖的package包/类

/**

* Tests fix for BUG#61150 - First call to SP

* fails with "No Database Selected"

* The workaround introduced in DatabaseMetaData.getCallStmtParameterTypes

* to fix the bug in server where SHOW CREATE PROCEDURE was not respecting

* lower-case table names is misbehaving when connection is not attached to

* database and on non-casesensitive OS.

*

* @throws Exception

* if the test fails.

*/

public void testBug61150() throws Exception {

NonRegisteringDriver driver = new NonRegisteringDriver();

Properties oldProps = driver.parseURL(BaseTestCase.dbUrl, null);

String host = driver.host(oldProps);

int port = driver.port(oldProps);

StringBuilder newUrlToTestNoDB = new StringBuilder("jdbc:mysql://");

if (host != null) {

newUrlToTestNoDB.append(host);

}

newUrlToTestNoDB.append(":").append(port).append("/");

Statement savedSt = this.stmt;

Properties props = getHostFreePropertiesFromTestsuiteUrl();

props.remove(NonRegisteringDriver.DBNAME_PROPERTY_KEY);

Connection conn1 = DriverManager.getConnection(newUrlToTestNoDB.toString(), props);

this.stmt = conn1.createStatement();

createDatabase("TST1");

createProcedure("TST1.PROC", "(x int, out y int)\nbegin\ndeclare z int;\nset z = x+1, y = z;\nend\n");

CallableStatement cStmt = null;

cStmt = conn1.prepareCall("{call `TST1`.`PROC`(?, ?)}");

cStmt.setInt(1, 5);

cStmt.registerOutParameter(2, Types.INTEGER);

cStmt.execute();

assertEquals(6, cStmt.getInt(2));

cStmt.clearParameters();

cStmt.close();

conn1.setCatalog("TST1");

cStmt = null;

cStmt = conn1.prepareCall("{call TST1.PROC(?, ?)}");

cStmt.setInt(1, 5);

cStmt.registerOutParameter(2, Types.INTEGER);

cStmt.execute();

assertEquals(6, cStmt.getInt(2));

cStmt.clearParameters();

cStmt.close();

conn1.setCatalog("mysql");

cStmt = null;

cStmt = conn1.prepareCall("{call `TST1`.`PROC`(?, ?)}");

cStmt.setInt(1, 5);

cStmt.registerOutParameter(2, Types.INTEGER);

cStmt.execute();

assertEquals(6, cStmt.getInt(2));

cStmt.clearParameters();

cStmt.close();

this.stmt = savedSt;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值