สตริงการเชื่อมต่อไดรเวอร์ MySQL JDBC คืออะไร


117

ฉันเพิ่งเริ่มใช้ JDBC และฉันกำลังพยายามเชื่อมต่อกับฐานข้อมูล MySQL ฉันใช้ไดรเวอร์ Connector / J แต่ฉันไม่พบสตริงการเชื่อมต่อ JDBC สำหรับClass.forName()วิธีการของฉัน


4
ในการเริ่มต้นClass.forName()ไม่คาดหวังสตริงการเชื่อมต่อ JDBC แต่เป็นชื่อคลาสไดรเวอร์ JDBC
BalusC

คำตอบ:


114

สมมติว่าคนขับอยู่ในเส้นทาง

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

1
คุณจะหาเส้นทาง jdbc ได้อย่างไรหากไม่อยู่ในตัวแปรสภาพแวดล้อม
Roy Hinkley

1
ในโค้ดตัวอย่าง URL JDBC ได้รับการเข้ารหัสไม่ได้ค้นหาในตัวแปรสภาพแวดล้อมใด ๆ
Jaime Hablutzel

67

นี่คือเอกสาร:

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/…
hexicle

1
ถ้าผมมีสามคุณสมบัติที่จะใช้ในสตริงการเชื่อมต่อวิธีการที่จะมีรูปลักษณ์สตริงการเชื่อมต่อเช่น - เช่น: useOldAliasMetadataBehavior=true, useUnicode=true,characterEncoding=UTF-8
n00b Pr0grammer

17
"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
n00b Pr0grammer

@B Pavan Kumar เป็น URI ดังนั้นคุณสมบัติจึงควรคั่นด้วยเครื่องหมายแอมเพอร์แซนด์ ("&") ตามที่ระบุไว้ในข้อกำหนดที่ฉันยกมา
Tim Sylvester

1
@ N00bPr0grammerjdbc:mysql://[host][:port]/[database]?useOldAliasMetadataBehavior=true&useUnicode=true&characterEncoding=UTF-8
ssc-hrep3

5

มันง่ายมาก:

  1. ไปที่ MySQL workbench และค้นหาฐานข้อมูล> จัดการการเชื่อมต่อ
  2. คุณจะเห็นรายการการเชื่อมต่อ คลิกที่การเชื่อมต่อที่คุณต้องการเชื่อมต่อ
  3. คุณจะเห็นแท็บรอบ ๆ การเชื่อมต่อการจัดการระยะไกลโปรไฟล์ระบบ คลิกที่แท็บการเชื่อมต่อ
  4. url ของคุณคือ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 ของคุณเพื่อเชื่อมต่อด้วย
  5. สร้าง url ตามและตั้งค่า url เพื่อเชื่อมต่อ

5

สำหรับ 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);
   }
}


2

เนื่องจากดูเหมือนว่าคำตอบจะได้รับคำตอบแล้วจึงไม่มีอะไรจะเพิ่มมากนัก แต่ฉันต้องการเพิ่มสิ่งหนึ่งในคำตอบที่มีอยู่ นี่เป็นวิธีการโหลดคลาสสำหรับไดรเวอร์ JDBC สำหรับ mysql

com.mysql.jdbc.Driver

แต่ตอนนี้เลิกใช้แล้ว คลาสไดรเวอร์ใหม่อยู่ในขณะนี้

com.mysql.cj.jdbc.Driver

นอกจากนี้ไดรเวอร์ยังได้รับการลงทะเบียนโดยอัตโนมัติผ่าน SPI และโดยทั่วไปแล้วการโหลดคลาสไดรเวอร์ด้วยตนเองนั้นไม่จำเป็น


0
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]...]

0

โปรโตคอล // [เจ้าภาพ] [/ ฐานข้อมูล] [? คุณสมบัติ]

หากคุณไม่มีคุณสมบัติใด ๆ ให้ละเว้นมันก็จะเป็นเช่นนั้น

JDBC: MySQL: //127.0.0.1: 3306 / ทดสอบ

jdbc: mysql คือโปรโตคอล 127.0.0.1: เป็นโฮสต์และ 3306 คือการทดสอบหมายเลขพอร์ตเป็นฐานข้อมูล


0

ขึ้นอยู่กับว่าคุณใช้บริการอะไร

ถ้าคุณใช้ 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.