当前位置:  开发笔记 > 编程语言 > 正文

使用Java获取MySQL版本

如何解决《使用Java获取MySQL版本》经验,为你挑选了1个好方法。

我测试了这段代码来获取MySQL版本:

public void testMySQLVersion() throws Exception
    {
        System.out.println("\nTesting SQL query for MySQL version\n");

        // Load the JDBC driver
        DriverManager.registerDriver(new oracle.jdbc.OracleDriver());

        // Connect to the database
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@112.213.131.40:3306:webdb", "admin", "eHqtaXuc6h1w");

        PreparedStatement pstmt
            = conn.prepareStatement("SHOW VARIABLES LIKE 'version'");

        ResultSet rset = pstmt.executeQuery();

        while (rset.next())
        {
            System.out.println("MySQL version " + rset.getString("Value"));
        }

        pstmt.close();
        conn.close();
    }

但是当我运行代码时,我得到了这个结果:

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.634 sec <<< FAILURE! - in org.mysql.engine.osgi.impl.MySQLImplTest
testMySQLVersion(org.mysql.engine.osgi.impl.MySQLImplTest)  Time elapsed: 0.633 sec  <<< ERROR!
java.lang.StringIndexOutOfBoundsException: String index out of range: 12300
    at java.lang.String.checkBounds(String.java:385)
    at java.lang.String.(String.java:324)
    at oracle.net.ns.Packet.extractData(Packet.java:447)
    at oracle.net.ns.RefusePacket.(RefusePacket.java:70)
    at oracle.net.ns.NSProtocolStream.negotiateConnection(NSProtocolStream.java:239)
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:264)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1452)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:496)
    at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at org.mysql.engine.osgi.impl.MySQLImplTest.testMySQLVersion(MySQLImplTest.java:66)

你能给我一些如何解决这个问题的建议吗?



1> Tunaki..:

要获得数据库版本,有一个更简单的解决方案.一旦你有一个Connection数据库,你可以得到它的元数据,并从中提取与版本getDatabaseProductVersion():

Connection con = ...;
DatabaseMetaData meta = con.getMetaData();
System.out.println(meta.getDatabaseProductVersion());

这适用于MySQL或Oracle数据库.

请注意,您当前的代码很奇怪:您希望获得MySQL数据库版本,但您的SQL连接字符串处理Oracle(jdbc:oracle:thin).

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有