【发布时间】:2010-11-30 06:32:39
【问题描述】:
我是 JDBC 新手,我正在尝试连接到 MySQL 数据库。
我正在使用 Connector/J 驱动程序,但我找不到我的 Class.forName() 方法的 JDBC 连接字符串。
【问题讨论】:
-
首先,
Class.forName()不需要 JDBC 连接字符串,而是 JDBC 驱动程序类名。
标签: mysql jdbc connection-string
我是 JDBC 新手,我正在尝试连接到 MySQL 数据库。
我正在使用 Connector/J 驱动程序,但我找不到我的 Class.forName() 方法的 JDBC 连接字符串。
【问题讨论】:
Class.forName() 不需要 JDBC 连接字符串,而是 JDBC 驱动程序类名。
标签: mysql jdbc connection-string
假设您的驱动程序在路径中,
String url = "jdbc:mysql://localhost/test";
Class.forName ("com.mysql.jdbc.Driver").newInstance ();
Connection conn = DriverManager.getConnection (url, "username", "password");
【讨论】:
这是文档:
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”,您可以找到它(编辑:现在在同一页面上)。
【讨论】:
useOldAliasMetadataBehavior=true、useUnicode=true、characterEncoding=UTF-8
"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=true、useUnicode=true、characterEncoding=UTF-8
jdbc:mysql://[host][:port]/[database]?useOldAliasMetadataBehavior=true&useUnicode=true&characterEncoding=UTF-8
很简单:
jdbc:mysql://<hostname>:<port>/<dbname>?prop1 等。
其中<hostname> 和<port> 在连接选项卡中给出。它主要是本地主机:3306。<dbname> 将在 Windows 服务名称的系统配置文件选项卡下找到。默认主要是 MySQL5<x> 其中 x 是版本号,例如。 MySQL5.6 为 56,MySQL5.5 为 55 等。您也可以指定自己的 Windows 服务名称进行连接。【讨论】:
对于 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);
}
}
【讨论】:
由于答案似乎已经得到解答,没有太多要添加的内容,但我想在现有答案中添加一件事。 这是mysql的JDBC驱动加载类的方式
com.mysql.jdbc.Driver
但现在已弃用。新的驱动程序类现在
com.mysql.cj.jdbc.Driver
此外,驱动程序是通过 SPI 自动注册的,通常不需要手动加载驱动程序类。
【讨论】:
mySQL 8 更新:
String jdbcUrl="jdbc:mysql://localhost:3306/youdatabase?useSSL=false&serverTimezone=UTC";
【讨论】:
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();
}
}
}
【讨论】:
方法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;
}
}
【讨论】:
这是我这边的一个小代码:)
需要的驱动程序:
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();
}
}
【讨论】:
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]...]
【讨论】:
协议//[主机][/数据库][?properties]
如果你没有任何属性忽略它,那么它会像
jdbc:mysql://127.0.0.1:3306/test
jdbc:mysql 是协议 127.0.0.1:是主机,3306是端口号 测试是数据库
【讨论】:
这取决于您使用的服务。
如果你使用 MySQL Workbench,它会是这样的:
jdbc:mysql://"host":"端口号"/
String url = "jdbc:mysql://localhost:3306/";
当然,如果您使用 SSL/SSH,情况会有所不同。
更多信息请点击 Jetbriens (intelliJ idea) 的官方链接:
https://www.jetbrains.com/help/idea/connecting-to-a-database.html
Configuring database connections #
https://www.jetbrains.com/help/idea/configuring-database-connections.html
【讨论】:
检查 Driver Connector jar 是否与 SQL 版本匹配。
我也遇到了和我使用的一样的错误
mySQl-connector-java-5.1.30.jar
使用 MySql 8
【讨论】: