ฉันเพิ่งเริ่มใช้ JDBC และฉันกำลังพยายามเชื่อมต่อกับฐานข้อมูล MySQL ฉันใช้ไดรเวอร์ Connector / J แต่ฉันไม่พบสตริงการเชื่อมต่อ JDBC สำหรับClass.forName()
วิธีการของฉัน
ฉันเพิ่งเริ่มใช้ JDBC และฉันกำลังพยายามเชื่อมต่อกับฐานข้อมูล MySQL ฉันใช้ไดรเวอร์ Connector / J แต่ฉันไม่พบสตริงการเชื่อมต่อ JDBC สำหรับClass.forName()
วิธีการของฉัน
คำตอบ:
สมมติว่าคนขับอยู่ในเส้นทาง
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]
โฮสต์: พอร์ตคือชื่อโฮสต์และหมายเลขพอร์ตของคอมพิวเตอร์ที่โฮสต์ฐานข้อมูลของคุณ หากไม่ได้ระบุไว้ค่าเริ่มต้นของโฮสต์และพอร์ตคือ 127.0.0.1 และ 3306 ตามลำดับ
ฐานข้อมูลคือชื่อของฐานข้อมูลที่จะเชื่อมต่อ หากไม่ได้ระบุการเชื่อมต่อจะถูกสร้างขึ้นโดยไม่มีฐานข้อมูลเริ่มต้น
เฟลโอเวอร์คือชื่อของฐานข้อมูลสแตนด์บาย (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>
จะได้รับใน<dbname>
แท็บการเชื่อมต่อโดยส่วนใหญ่จะเป็น localhost: 3306 จะอยู่ในแท็บ System Profile ใน Windows Service Name ค่าเริ่มต้นส่วนใหญ่จะเป็น MySQL5 <x>
โดยที่ x คือหมายเลขเวอร์ชันเช่น 56 สำหรับ MySQL5.6 และ 55 สำหรับ MySQL5.5 เป็นต้นคุณสามารถระบุชื่อบริการ Windows ของคุณเพื่อเชื่อมต่อด้วยสำหรับ MySQL, สตริงการเชื่อมต่อไดรเวอร์ JDBC คือ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 8:
String jdbcUrl="jdbc:mysql://localhost:3306/youdatabase?useSSL=false&serverTimezone=UTC";
เนื่องจากดูเหมือนว่าคำตอบจะได้รับคำตอบแล้วจึงไม่มีอะไรจะเพิ่มมากนัก แต่ฉันต้องการเพิ่มสิ่งหนึ่งในคำตอบที่มีอยู่ นี่เป็นวิธีการโหลดคลาสสำหรับไดรเวอร์ JDBC สำหรับ mysql
com.mysql.jdbc.Driver
แต่ตอนนี้เลิกใช้แล้ว คลาสไดรเวอร์ใหม่อยู่ในขณะนี้
com.mysql.cj.jdbc.Driver
นอกจากนี้ไดรเวอร์ยังได้รับการลงทะเบียนโดยอัตโนมัติผ่าน SPI และโดยทั่วไปแล้วการโหลดคลาสไดรเวอร์ด้วยตนเองนั้นไม่จำเป็น
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 ();
คำสั่งจัดการทรัพยากรอัตโนมัติ (ARM) ถูกเพิ่มใน JDBC 4.1 ซึ่งมาตามค่าเริ่มต้นใน Java 7
รูปแบบทั่วไปสำหรับ JDBC URL สำหรับเชื่อมต่อกับเซิร์ฟเวอร์ MySQL มีดังต่อไปนี้โดยมีรายการในวงเล็บเหลี่ยม ([]) เป็นทางเลือก:
jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] »
[?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]
โปรโตคอล // [เจ้าภาพ] [/ ฐานข้อมูล] [? คุณสมบัติ]
หากคุณไม่มีคุณสมบัติใด ๆ ให้ละเว้นมันก็จะเป็นเช่นนั้น
JDBC: MySQL: //127.0.0.1: 3306 / ทดสอบ
jdbc: mysql คือโปรโตคอล 127.0.0.1: เป็นโฮสต์และ 3306 คือการทดสอบหมายเลขพอร์ตเป็นฐานข้อมูล
ขึ้นอยู่กับว่าคุณใช้บริการอะไร
ถ้าคุณใช้ MySQL Workbench มันจะเป็นแบบนี้:
jdbc: mysql: // "host": "หมายเลขพอร์ต" /
String url = "jdbc:mysql://localhost:3306/";
และแน่นอนว่ามันจะแตกต่างออกไปหากคุณใช้ SSL / SSH
สำหรับข้อมูลเพิ่มเติมตามลิงค์อย่างเป็นทางการของ Jetbriens (แนวคิด intelliJ):
https://www.jetbrains.com/help/idea/connecting-to-a-database.html
การกำหนดค่าการเชื่อมต่อฐานข้อมูล #
https://www.jetbrains.com/help/idea/configuring-database-connections.html
Class.forName()
ไม่คาดหวังสตริงการเชื่อมต่อ JDBC แต่เป็นชื่อคลาสไดรเวอร์ JDBC