在cmd中执行jdbc连接时出错

时间:2015-12-24 15:25:53

标签: java oracle jdbc

我正在使用oracle 12c并希望学习使用cmd以便我知道当我在IDE上单击构建/运行时会发生什么(更像是一般的想法)

JDBCCheck.java:

import java.sql.*;
import oracle.jdbc.*;
import oracle.jdbc.pool.OracleDataSource;
public class JDBCCheck
{
    public static void main (String args[]) throws SQLException
    {
        OracleDataSource ods = new OracleDataSource();
        ods.setURL("jdbc:oracle:thin:system/system@localhost:1521:oracle");
        Connection conn = ods.getConnection();
        // Create Oracle DatabaseMetaData object
        DatabaseMetaData meta = conn.getMetaData();
        // gets driver info:
        System.out.println("JDBC driver version is " + meta.getDriverVersion());
    }
}

我已经设置了类路径

>echo %CLASSPATH%
    C:\OracleInstalation\product\12.1.0\dbhome_1\jdbc\lib\ojdbc6.jar;
C:\OracleInstalation\product\12.1.0\dbhome_1\jlib\orai18n.jar

JDBC驱动程序检查

>java -jar .\ojdbc7.jar
Oracle 12.1.0.1.0 JDBC 4.1 compiled with JDK7 on Thu_Apr_04_15:09:24_PDT_2013
#Default Connection Properties Resource
#Thu Dec 24 20:52:27 IST 2015

此代码已成功编译,但

>java JDBCCheck
Error: Could not find or load main class JDBCCheck

我检查了目录中的JDBCCheck.class并且它存在

然后我在JCreator中创建了一个具有相同代码的项目,并将该档案添加到项目中,它已成功运行

输出:

JDBC driver version is 12.1.0.1.0

为什么我在cmd中执行时遇到错误,或者是否可以从cmd执行?

1 个答案:

答案 0 :(得分:1)

您不应该使用oracle.jdbc.*类,因为它们是特定于数据库的。 java.sql.*层用于保持代码数据库不可知。

至于运行该类的问题,您需要确保它在类路径中。最简单的方法是在命令行中添加当前目录.(以及其他所需的jar),例如:java -cp .;some.jar;other/library.jar JDBCCheck

将你的类放在一个包中也是可取的,在这种情况下你可以像上面那样运行它,除了classname是my.package.JDBCCheck,你可以在包含子目录的父目录中运行它(和classfile)my/package/JDBCCheck.class