簡體   English   中英

Java不會連接到數據庫,無論使用什么驅動程序

[英]Java Wont connect to database no matter what driver

import java.sql.*;

public class Connect
{
   public static void main (String[] args)
   {
       Connection conn = null;

       try
       {
           String userName = "root";
           String password = "password123!";
           String url = "jdbc:oracle:thin:@localhost:3306:procomport";
           //Class.forName ("oracle.jdbc.driver.OracleDriver");
           conn = DriverManager.getConnection(url, userName, password);
                //Connection connection = DriverManager.getConnection(url , userName, password);
           System.out.println ("Database connection established");
       }
       catch (Exception e)
       {
           System.err.println ("Cannot connect to database server");
       }
       finally
       {
           if (conn != null)
           {
               try
               {
                   conn.close ();
                   System.out.println ("Database connection terminated");
               }
               catch (Exception e) { /* ignore close errors */ }
           }
       }
   }
}

這是我的代碼,我有多個不同的數據庫,但是它不會連接到其中的任何數據庫,這是什么問題? 我不斷收到錯誤消息,它無法連接到數據庫。 盡管我可以使用其他管理工具連接到它,但是這是驅動程序問題嗎? 我怎么能知道我是否有必要的司機?

您提供的用於連接數據庫的代碼不會同時連接MySQL或Oracle,因為這是嘗試將兩者都連接的一堆雜燴。

對於Oracle,代碼應類似於:

       String userName = "root";
       String password = "password123!";
       String url = "jdbc:oracle:thin:@localhost:1521:procomport";
       Class.forName("oracle.jdbc.driver.OracleDriver");
       conn = DriverManager.getConnection(url, userName, password);

(假設您在Oracle上有一個名為root的用戶,並且Oracle SID是procomport )。 特別注意端口號的更改:MySQL通常使用3306 ,Oracle使用1521

對於MySQL,連接代碼應如下所示:

       String userName = "root";
       String password = "password123!";
       String url = "jdbc:mysql://localhost:3306/procomport";
       Class.forName("com.mysql.jdbc.Driver");
       conn = DriverManager.getConnection(url, userName, password);

(假設您的MySQL數據庫稱為procomport )。 注意連接URL和驅動程序類名稱的不同樣式。

Oracle驅動程序通常在一個名為ojdbc6.jar的JAR文件中,而MySQL在一個名為mysql-connector-java-5.1.18-bin.jar的JAR文件中。

最后,當你寫類似

   catch (Exception e)
   {
       System.err.println ("Cannot connect to database server");
   }

你真的沒有在幫助自己。 異常e幾乎肯定會包含您的數據庫連接代碼無法正常工作的原因,但是,通過故意忽略它,您將更加難以發現錯誤所在。

老實說,我很想聲明main方法throws Exception (通過將其添加到public static void main...行的末尾),然后可以刪除無用的catch塊。 如果在main內引發了異常且未對其進行處理,則JVM將在退出之前為您打印堆棧跟蹤。

在您之后:

System.err.println();

放置:

e.printStacktrace();

然后,您將看到真正的錯誤消息。 驅動程序類可能不在類路徑中。

希望這個能對您有所幫助

  1. 取消注釋Class.forName("oracle.jdbc.driver.OracleDriver");
  2. 確保類路徑中有Oracle驅動程序“ oracle.jdbc.driver.OracleDriver

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM