【问题标题】:How to connect MySQL to Java program如何将 MySQL 连接到 Java 程序
【发布时间】:2011-03-23 13:44:38
【问题描述】:

我已经安装了 MySQL(上次更新)。 我需要编写代码,它将创建并建立与 SQL DB 的连接 & 管理数据库(使用 SELECT、INSERT、CREATE)。

我做了一切,但是我无法创建连接。我还安装了 MySQL/J 连接器,我只是将 .zip 包提取到一个文件夹中,并在 Variables 中添加了文件夹路径。

谁能告诉我下一行中的 URL 是指 wat 吗?

Connection connection = DriverManager.getConnection(url, username, password);

我试过这个:

String url = "jdbc:odbc:sqlserver://localhost:3306/myfirstdb";
Connection con = DriverManager.getConnection(url, "root", "1234");

但它不起作用。我无法理解“URL”一词。 谁能解释一下,'url'和wat的含义应该通过Java连接到SQL服务器。


更新:

这是完整的代码。它仍然无法连接。

import java.sql.*;

public class TestDriver {

public static void main(String[] args) {
try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//This s wat actually i did for connection
    System.out.println("Driver Loaded Succesfully");
}
catch (Exception e){
    System.out.println("Unable to Load Driver!!!");
}

try {
    Class.forName(com.mysql.jdbc.Driver");  // initialise the driver
    String url ="jdbc:mysql://localhost:3306/myfirstdb";
    Connection con = DriverManager.getConnection(url, "root", "1234");
    System.out.println("connection Established");
    }
    catch(Exception e) {
                System.out.println("Couldnt get connection");
    }
    }
}

你能告诉我 MySQL Connector/J 的用途是什么吗?

【问题讨论】:

标签: java mysql jdbc connection


【解决方案1】:

在问题中,您似乎正在使用带有 SQL Server jdbc URL 的 MySQL jdbc 驱动程序。这行不通。

如果您使用的是MySQL 数据库:

Class.forName("com.mysql.jdbc.Driver");  // initialise the driver

String url ="jdbc:mysql://localhost:3306/myfirstdb";

如果您使用的是 SQL Server 数据库,您将需要一个完全不同的 jdbc 驱动程序。 jTDS 是开源的,是一个不错的选择。在您的类路径中包含 jtds.jar 文件并使用如下内容:

Class.forName("net.sourceforge.jtds.jdbc.Driver");  // initialise the driver

String url = "jdbc:jtds:sqlserver://localhost:1433/myfirstdb";

【讨论】:

    【解决方案2】:

    如果是 MS SQL Server,

    String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
    Class.forName(driver);
    String url = "jdbc:microsoft:sqlserver://host:1433/database";
    Connection conn = DriverManager.getConnection(url, "username", "password");
    

    有关详细信息,请参阅this 以开始使用 Microsoft JDBC。

    您可以为 MSSQL 使用两种 JDBC 驱动程序中的任何一种:

    对于 MS SQL Server 驱动程序 2.0,使用

    URL: jdbc:sqlserver://server:port; DatabaseName=dbname
    Class name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    

    对于 MySql 和 Java,请参阅 SO 上的 this

    【讨论】:

      【解决方案3】:

      这是您代码的摘录:

      } catch (Exception e) {
          System.out.println("Couldnt get connection");
      }
      

      只要您不了解其原因,就应该从不抑制异常。至少替换为:

      } catch (Exception e) {
          System.out.println("Could not get connection");
          e.printStackTrace();
      }
      

      或许

      } catch (Exception e) {
          throw new RuntimeException("Could not get connection", e);
      }
      

      无论哪种方式,您都应该看到异常类型、消息和跟踪。在您的代码 sn-p 中,可能的例外是 ClassNotFoundExceptionSQLException。第一个意味着驱动程序未正确放置在类路径中。第二个意味着无法获得连接。异常消息和/或跟踪应详细说明问题的根本原因。

      您应该始终观察异常。他们讲述了问题的原因。要知道,一旦了解了原因,解决方案就显而易见了 :)

      另见:


      进一步,

      谁能告诉我下一行中的 URL 是指 wat 吗?

      网址是Uniform Resource Locator。这是在计算机系统和网络中定位(识别)独特资源的常用方法。 MySQL 数据库的 URL 语法在 documentation of the JDBC driver 中进行了说明。

      你能告诉我 MySQL Connector/J 的用途是什么吗?

      这是 JDBC 驱动程序。 JDBC API 几乎只存在于接口。 DB 供应商应提供自己的具体 JDBC API 实现,即 JDBC 驱动程序。借助 JDBC 驱动程序,您将能够使用 JDBC API 连接特定数据库。

      【讨论】:

        【解决方案4】:

        你忘记了 Class.forName(com.mysql.jdbc.Driver"); 的 " 应该是

        Class.forName("com.mysql.jdbc.Driver");
        

        【讨论】:

        • 这件事发生在 5 年前,伙计。无论如何,谢谢你的回答。 :-)
        猜你喜欢
        • 2018-01-18
        • 1970-01-01
        • 1970-01-01
        • 2014-01-21
        • 1970-01-01
        • 1970-01-01
        • 2011-05-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多