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

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

4

3 回答 3

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);

(假设您有一个调用rootOracle 的用户,并且 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 驱动程序通常位于一个名为 的 JAR 文件ojdbc6.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 将在退出之前为您打印堆栈跟踪。

于 2012-07-08T08:10:49.033 回答
0

在你之后:

System.err.println();

放置一个:

e.printStacktrace();

然后你会看到真正的错误信息。驱动程序类可能不在类路径中。

希望对你有帮助

于 2012-07-08T04:38:24.400 回答
0
  1. 取消注释该行Class.forName("oracle.jdbc.driver.OracleDriver");
  2. oracle.jdbc.driver.OracleDriver确保在类路径中有 Oracle 驱动程序“ ”
于 2012-07-08T04:51:51.417 回答