2

好吧,我真的很生气,因为我意识到这很容易,但在这一点上,我不确定还有什么可以尝试的。该程序只是简单地创建一个存储硬币名称、数量和价值的硬币表。我开始从命令行启动程序,但在没有让它工作后,我将其更改为在 NetBeans 中执行。我不断收到相同的错误消息。我已经搜索了解决方案,但找不到问题,因为我的驱动程序类似乎是必需的。我目前正在使用 com.mysql.jdbc.Driver 作为驱动程序。

    public class CoinDataBase {

     static String file = "C:\\Users\\Dan\\Desktop\\database.properties.txt";

     public static void main(String[] args) throws SQLException, IOException,
        ClassNotFoundException {


     SimpleDataSource.init(file);

     Connection conn = SimpleDataSource.getConnection();
     try
     {
        Statement stat = conn.createStatement();

        stat.execute("CREATE TABLE Coin (Name VARCHAR(12),Value "
                + "DECIMAL(5,2),QTY DECIMAL(5,0),Value DECIMAL(5,2)"
                + ",Total DECIMAL(5,2))");
        stat.execute("INSERT INTO Coin VALUES('Penny',.01,5,.05)");
        stat.execute("INSERT INTO Coin VALUES('Nickel',.05,2,.10)");
        stat.execute("INSERT INTO Coin VALUES('Dime',.10,3,.30)");
        stat.execute("INSERT INTO Coin VALUES('Quarter',.25,2,.50)");
        stat.execute("INSERT INTO Coin VALUES('Half Dollar',.50,3,1.50)");
        stat.execute("INSERT INTO Coin VALUES('Dollar',1.00,2,2.00)"); 

        ResultSet result = stat.executeQuery("SELECT * FROM Coin");
        result.next();
        System.out.println(result.getString("Name")); 
     }
     finally
     {
        conn.close();
     }
    }
    }

还有我的二等...

    class SimpleDataSource {

    private static String url, username, password;

    static void init(String fileName) throws IOException, ClassNotFoundException
    {
      Properties props = new Properties();
      FileInputStream in = new FileInputStream(fileName);
      props.load(in);

      String driver = props.getProperty("jdbc.driver");
      url = props.getProperty("jdbc.url");
      username = props.getProperty("jdbc.username");
      if (username == null) username = "";
      password = props.getProperty("jdbc,password");
      if (password == null) password = "";
      if (driver != null)
        Class.forName(driver);  
    }

     static Connection getConnection() throws SQLException{
     return DriverManager.getConnection(url, username, password);
    }  
    }

以及完整的错误消息:

Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at coindatabase.SimpleDataSource.init(SimpleDataSource.java:28)
    at coindatabase.CoinDataBase.main(CoinDataBase.java:20)
Java Result: 1

我真的很感激任何帮助。我不知道我哪里错了。我可以通过 NetBeans 中的服务连接并创建数据库,所以我认为它没有配置错误。

4

2 回答 2

2

1) 确保 oracle.jar 在您项目的运行时类路径中:

http://netbeans.org/kb/docs/java/project-setup.html

2)值得一试oracle.jdbc.Driver.OracleDriver

'希望有帮助

于 2013-03-02T05:15:38.873 回答
0

当尝试在 Ubuntu(javaSE 1.6)上使用 Eclipse 连接到 Postgresql DB 时,对于同样的错误,什么对我有用。我去了 Eclipse -> Project -> Proprieties -> Java Build Path -> Libraries -> add external jar 并从http://jdbc.postgresql.org/download.html添加了 postgresql-9.3-1100.jdbc4.jar 。

Connection con = null;
    Statement st = null;
    ResultSet rs = null;


    String url = "jdbc:postgresql://localhost:5432/unnamed_db";
    String user = "postgres";
    String password = "*";

    try {
        con = DriverManager.getConnection(url, user, password);
        st = con.createStatement();
        rs = st.executeQuery("select * from table;");

        if (rs.next()) {
            System.out.println(rs.getString(1));
        }

    } catch (SQLException ex) {
        Logger lgr = Logger.getLogger(Version.class.getName());
        lgr.log(Level.SEVERE, ex.getMessage(), ex);

    } finally {
        try {
            if (rs != null) {
                rs.close();
            }
            if (st != null) {
                st.close();
            }
            if (con != null) {
                con.close();
            }

        } catch (SQLException ex) {
            Logger lgr = Logger.getLogger(Version.class.getName());
            lgr.log(Level.WARNING, ex.getMessage(), ex);
        }
    }
于 2014-01-26T19:23:10.930 回答