【问题标题】:What is the MySQL JDBC driver connection string?什么是 MySQL JDBC 驱动程序连接字符串?
【发布时间】:2010-11-30 06:32:39
【问题描述】:

我是 JDBC 新手,我正在尝试连接到 MySQL 数据库。 我正在使用 Connector/J 驱动程序,但我找不到我的 Class.forName() 方法的 JDBC 连接字符串。

【问题讨论】:

  • 首先,Class.forName() 不需要 JDBC 连接字符串,而是 JDBC 驱动程序类名。

标签: mysql jdbc connection-string


【解决方案1】:

假设您的驱动程序在路径中,

String url = "jdbc:mysql://localhost/test";
Class.forName ("com.mysql.jdbc.Driver").newInstance ();
Connection conn = DriverManager.getConnection (url, "username", "password");

【讨论】:

  • jdbc路径不在环境变量中怎么找到?
  • 在示例代码中,JDBC url 已被硬编码,未在任何环境变量中搜索
【解决方案2】:

这是文档:

https://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html

基本连接字符串如下所示:

jdbc:mysql://localhost:3306/dbname

class.forName 字符串是“com.mysql.jdbc.Driver”,您可以找到它(编辑:现在在同一页面上)。

【讨论】:

  • 以上链接失效。这是一个新的工作链接:dev.mysql.com/doc/connector-j/en/…
  • 如果我在连接字符串中使用三个属性,连接字符串会是什么样子 - 例如:useOldAliasMetadataBehavior=trueuseUnicode=truecharacterEncoding=UTF-8
【解决方案3】:
"jdbc:mysql://localhost"

来自 oracle 文档..

jdbc:mysql://[host][,failoverhost...]
[:port]/[database]
[?propertyName1][=propertyValue1]
[&propertyName2][=propertyValue2]

host:port 是托管数据库的计算机的主机名和端口号。如果不指定,host和port的默认值分别为127.0.0.1和3306。

database 是要连接的数据库的名称。如果未指定,则在没有默认数据库的情况下建立连接。

failover 是备用数据库的名称(MySQL Connector/J 支持故障转移)。

propertyName=propertyValue 表示一个可选的、以 & 符号分隔的属性列表。这些属性使您能够指示 MySQL Connector/J 执行各种任务。

【讨论】:

  • 如果我要在连接字符串中使用三个属性,连接字符串会是什么样子 - 例如:useOldAliasMetadataBehavior=trueuseUnicode=truecharacterEncoding=UTF-8
  • @B Pavan Kumar 这是一个 URI,所以属性应该用&符号(“&”)分隔,如我引用的规范中所示。
  • @N00bPr0grammer jdbc:mysql://[host][:port]/[database]?useOldAliasMetadataBehavior=true&useUnicode=true&characterEncoding=UTF-8
【解决方案4】:

很简单:

  1. 转到 MySQL 工作台并查找数据库 > 管理连接
  2. 您将看到一个连接列表。点击您要连接的连接。
  3. 您将看到围绕连接、远程管理、系统配置文件的选项卡。点击连接选项卡。
  4. 您的网址是jdbc:mysql://<hostname>:<port>/<dbname>?prop1 等。 其中<hostname><port> 在连接选项卡中给出。它主要是本地主机:3306。<dbname> 将在 Windows 服务名称的系统配置文件选项卡下找到。默认主要是 MySQL5<x> 其中 x 是版本号,例如。 MySQL5.6 为 56,MySQL5.5 为 55 等。您也可以指定自己的 Windows 服务名称进行连接。
  5. 相应地构造 url 并设置要连接的 url。

【讨论】:

    【解决方案5】:

    对于 Mysql,jdbc Driver 连接字符串是 com.mysql.jdbc.Driver。使用以下代码进行连接:-

    class DBConnection {
       private static Connection con = null;
       private static String USERNAME = "your_mysql_username";
       private static String PASSWORD = "your_mysql_password";
       private static String DRIVER = "com.mysql.jdbc.Driver";
       private static String URL = "jdbc:mysql://localhost:3306/database_name";
    
       public static Connection getDatabaseConnection(){
           Class.forName(DRIVER);
           return con = DriverManager.getConnection(URL,USERNAME,PASSWORD);
       }
    }
    

    【讨论】:

      【解决方案6】:

      由于答案似乎已经得到解答,没有太多要添加的内容,但我想在现有答案中添加一件事。 这是mysql的JDBC驱动加载类的方式

      com.mysql.jdbc.Driver
      

      但现在已弃用。新的驱动程序类现在

      com.mysql.cj.jdbc.Driver
      

      此外,驱动程序是通过 SPI 自动注册的,通常不需要手动加载驱动程序类。

      【讨论】:

        【解决方案7】:

        mySQL 8 更新:

        String jdbcUrl="jdbc:mysql://localhost:3306/youdatabase?useSSL=false&serverTimezone=UTC";

        【讨论】:

          【解决方案8】:

          mySQL 8 更新:

          String jdbcUrl="jdbc:mysql://localhost:3306/youdatabase?useSSL=false&serverTimezone=UTC";

          使用以下代码 sn-p 检查你的 Jdbc 配置和 URL 是否正确。

          import java.sql.Connection;
          import java.sql.DriverManager;
          
          public class TestJdbc {
          
              public static void main(String[] args) {
          
                  //db name:testdb_version001
                  //useSSL=false (get rid of MySQL SSL warnings)
          
                  String jdbcUrl = "jdbc:mysql://localhost:3306/testdb_version001?useSSL=false";
                  String username="testdb";
                  String password ="testdb";
          
                  try{
          
                      System.out.println("Connecting to database :" +jdbcUrl);
                      Connection myConn =
                              DriverManager.getConnection(jdbcUrl,username,password);
          
                      System.out.println("Connection Successful...!");
          
          
                  }catch (Exception e){
                      e.printStackTrace();
                      //e.printStackTrace();
                  }
          
              }
          
          
          }
          

          【讨论】:

            【解决方案9】:

            方法Class.forName()用于注册JDBC驱动。连接字符串用于检索与数据库的连接。

            检索与数据库的连接的方法如下所示。理想情况下,由于您不想创建到数据库的多个连接,请将连接限制为一个并重复使用同一连接。因此,在处理与数据库的连接时,请在此处使用单例模式。

            下图显示了一个连接字符串与检索的连接:

            public class Database {
               
                private String URL = "jdbc:mysql://localhost:3306/your_db_name"; //database url
                private String username = ""; //database username
                private String password = ""; //database password
                private static Database theDatabase = new Database(); 
                private Connection theConnection;
                
                private Database(){
                    try{
                          Class.forName("com.mysql.jdbc.Driver"); //setting classname of JDBC Driver
                          this.theConnection = DriverManager.getConnection(URL, username, password);
                    } catch(Exception ex){
                        System.out.println("Error Connecting to Database: "+ex);
                    }
                }
            
                public static Database getDatabaseInstance(){
                    return theDatabase;
                }
                
                public Connection getTheConnectionObject(){
                    return theConnection;
                }
            }
            

            【讨论】:

              【解决方案10】:

              这是我这边的一个小代码:)

              需要的驱动程序:

              com.mysql.jdbc.Driver
              

              下载:here(平台无关)

              一行中的连接字符串:

              jdbc:mysql://localhost:3306/db-name?user=user_name&password=db_password&useSSL=false
              

              示例代码:

              public static void testDB(){
                  try {
                      Class.forName("com.mysql.jdbc.Driver");
                  } catch (ClassNotFoundException e) {
                      e.printStackTrace();
                  }
              
                  try {
                      Connection connection = DriverManager.getConnection(
                              "jdbc:mysql://localhost:3306/db-name?user=user_name&password=db_password&useSSL=false");
                      if (connection != null) {
                          Statement statement = connection.createStatement();
                          if (statement != null) {
                              ResultSet resultSet = statement.executeQuery("select * from test");
                              if (resultSet != null) {
                                  ResultSetMetaData meta = resultSet.getMetaData();
                                  int length = meta.getColumnCount();
                                  while(resultSet.next())
                                  {
                                      for(int i = 1; i <= length; i++){
                                          System.out.println(meta.getColumnName(i) + ": " + resultSet.getString(meta.getColumnName(i)));
                                      }
                                  }
                                  resultSet.close();
                              }
                              statement.close();
                          }
                          connection.close();
                      }
                  } catch (Throwable throwable) {
                      throwable.printStackTrace();
                  }
              }
              

              【讨论】:

                【解决方案11】:
                String url = "jdbc:mysql://localhost:3306/dbname";
                String user = "user";
                String pass = "pass";
                Class.forName ("com.mysql.jdbc.Driver").newInstance ();
                Connection conn = DriverManager.getConnection (url, user, pass);
                

                3306 是 mysql 的默认端口。

                如果您使用的是 Java 7,则甚至不需要添加 Class.forName("com.mysql.jdbc.Driver").newInstance (); 语句。在 Java 7 中默认提供的 JDBC 4.1 中添加了自动资源管理 (ARM)。

                用于连接 MySQL 服务器的 JDBC URL 的一般格式如下,方括号 ([ ]) 中的项目是可选的:

                jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] »
                [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]
                

                【讨论】:

                  【解决方案12】:

                  协议//[主机][/数据库][?properties]

                  如果你没有任何属性忽略它,那么它会像

                  jdbc:mysql://127.0.0.1:3306/test

                  jdbc:mysql 是协议 127.0.0.1:是主机,3306是端口号 测试是数据库

                  【讨论】:

                    【解决方案13】:

                    这取决于您使用的服务。

                    如果你使用 MySQL Workbench,它会是这样的:

                    jdbc:mysql://"host":"端口号"/

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

                    当然,如果您使用 SSL/SSH,情况会有所不同。

                    更多信息请点击 Jetbriens (intelliJ idea) 的官方链接:

                    Connecting to a database #

                    https://www.jetbrains.com/help/idea/connecting-to-a-database.html


                    Configuring database connections #

                    https://www.jetbrains.com/help/idea/configuring-database-connections.html

                    【讨论】:

                      【解决方案14】:

                      检查 Driver Connector jar 是否与 SQL 版本匹配。

                      我也遇到了和我使用的一样的错误

                      mySQl-connector-java-5.1.30.jar

                      使用 MySql 8

                      【讨论】:

                        猜你喜欢
                        • 2013-01-30
                        • 2011-12-03
                        • 1970-01-01
                        • 2015-04-01
                        • 1970-01-01
                        • 2015-11-04
                        • 1970-01-01
                        • 2013-03-26
                        相关资源
                        最近更新 更多