Java无论什么驱动程序都不能连接到数据库

时间:2012-07-08 04:33:13

标签: java mysql

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 */ }
           }
       }
   }
}

这是我的代码我有多个不同的数据库,但它不会连接到它们中的任何一个有什么问题呢?我一直收到它无法连接到数据库的错误。虽然我可以使用其他管理工具连接它,但这是一个驱动程序问题吗?我怎么能告诉我是否有必要的司机?

3 个答案:

答案 0 :(得分:1)

您提供的用于连接数据库的代码将无法连接到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文件中,而JAR中的MySQL名称为mysql-connector-java-5.1.18-bin.jar

最后,当你写一些像

这样的东西
   catch (Exception e)
   {
       System.err.println ("Cannot connect to database server");
   }
你真的没有帮助自己。异常e几乎肯定会包含您的数据库连接代码无法正常工作的原因,但是故意忽略它会使您自己更难以找出出错的地方。

老实说,我很想宣布main方法throws Exception(将其添加到public static void main...行的末尾),然后你可以删除你无益的catch阻止。如果抛出异常但未在main内处理,则JVM将在退出之前为您打印堆栈跟踪。

答案 1 :(得分:0)

在你之后:

System.err.println();

放置一个:

e.printStacktrace();

然后您将看到真正的错误消息。可能驱动程序类不在类路径中。

希望这会对你有所帮助

答案 2 :(得分:0)

  1. 取消注释第Class.forName("oracle.jdbc.driver.OracleDriver");
  2. 确保在类路径
  3. 中有Oracle驱动程序“oracle.jdbc.driver.OracleDriver