เชื่อมต่อ Java กับฐานข้อมูล MySQL


322

คุณเชื่อมต่อกับฐานข้อมูล MySQL ใน Java ได้อย่างไร

เมื่อฉันลองฉันได้

java.sql.SQLException: No suitable driver found for jdbc:mysql://database/table
    at java.sql.DriverManager.getConnection(DriverManager.java:689)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)

หรือ

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

หรือ

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

นี่คือวิดีโอสอนสั้น ๆ 3 นาทีที่แสดงให้เห็นถึงการใช้ MySQL จาก Java ลองใช้งานได้ที่นี่: บทแนะนำด่วน: การเชื่อมต่อกับฐานข้อมูล MySQL โดยใช้ Java
drorw

คำตอบ:


208

DriverManagerเป็นวิธีการทำสิ่งที่ค่อนข้างเก่า วิธีที่ดีกว่าคือการรับ a DataSourceโดยดูที่คอนเทนเนอร์เซิร์ฟเวอร์แอปของคุณซึ่งกำหนดค่าไว้แล้วสำหรับคุณ:

Context context = new InitialContext();
DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/myDB");

หรือ instantiating และกำหนดค่าจากไดรเวอร์ฐานข้อมูลของคุณโดยตรง:

MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setUser("scott");
dataSource.setPassword("tiger");
dataSource.setServerName("myDBHost.example.org");

และรับการเชื่อมต่อจากมันเช่นเดียวกับด้านบน:

Connection conn = dataSource.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT ID FROM USERS");
...
rs.close();
stmt.close();
conn.close();

1
ตัวอย่างอื่น ๆ มาใช้com.mysql.jdbc.Driverอย่างไร วิธีนี้ดีกว่าไหม
Jason S

7
ฉันคิดว่านี่เป็นคลาส Driver แบบเก่าที่ทำงานกับกลไกไดร์เวอร์แบบเก่า MysqlDataSourceดำเนินการjavax.sql.DataSourceซึ่งเป็นกลไกที่ใหม่กว่า
Sean Owen

1
สวัสดี @SeanOwen ฉันสงสัยว่าทำไมเราถึงปิดrsและstmt? ทำไมไม่เพียงconn?
Kamuran Sönecek

3
บางทีคุณควรเพิ่ม dataSource.setDatabaseName ("ฐานข้อมูล")
Myoch

1
เป็นวิธีปฏิบัติที่ดีในการปิด () สิ่งต่าง ๆ อย่างชัดเจนแม้ว่าจะเป็นรหัสมากกว่า การใช้งานที่ดีจะต้องปิดทรัพยากรเมื่อการเชื่อมต่อปิดลงใช่ พิจารณาบริบทอื่น ๆ ที่คุณต้องการใช้คำสั่งหรือการเชื่อมต่อซ้ำ ในการทดลองกับทรัพยากรของ Java 7 คุณจะได้รับพฤติกรรมนี้ฟรี:
Sean Owen

476

นี่คือคำอธิบายทีละขั้นตอนวิธีการติดตั้ง MySQL และ JDBC และวิธีใช้:

  1. ดาวน์โหลดและติดตั้งเซิร์ฟเวอร์ของ MySQL เพียงทำตามวิธีปกติ จำหมายเลขพอร์ตทุกครั้งที่คุณเปลี่ยน 3306มันเป็นไปโดยปริยาย

  2. ดาวน์โหลดไดรเวอร์ JDBC และใส่ classpathแยกไฟล์ ZIP และวางไฟล์ JAR ที่มีอยู่ใน classpath ไดร์เวอร์ JDBC เฉพาะผู้ขายเป็นการใช้งาน JDBC API อย่างเป็นรูปธรรม(บทช่วยสอนที่นี่ )

    หากคุณใช้ IDE เช่น Eclipse หรือ Netbeans คุณสามารถเพิ่มลงใน classpath ได้โดยการเพิ่มไฟล์ JAR เป็นLibraryไปยังBuild Pathในคุณสมบัติของโครงการ

    หากคุณกำลังทำ "plain vanilla" ในคอนโซลคำสั่งคุณต้องระบุพา ธ ไปยังไฟล์ JAR ใน-cpหรือ-classpathอาร์กิวเมนต์เมื่อเรียกใช้แอปพลิเคชัน Java ของคุณ

    java -cp.; / path / to / mysql-connector.jar com.example.YourClass

    .เป็นเพียงมีเพื่อเพิ่มปัจจุบันไดเรกทอรี classpath ได้เป็นอย่างดีเพื่อที่จะสามารถค้นหาcom.example.YourClassและ;เป็นตัวคั่น classpath มันเป็นใน Windows ใน Unix และโคลน:ควรใช้

  3. สร้างฐานข้อมูลใน MySQL มาสร้างฐานข้อมูลjavabaseกัน แน่นอนว่าคุณต้องการ World Domination ลองใช้ UTF-8 กันดีกว่า

    CREATE DATABASE javabase DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
  4. สร้างผู้ใช้สำหรับ Java และให้เข้าถึง เพียงเพราะการใช้rootเป็นวิธีปฏิบัติที่ไม่ดี

    CREATE USER 'java'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL ON javabase.* TO 'java'@'localhost' IDENTIFIED BY 'password';

    ใช่javaเป็นชื่อผู้ใช้และpasswordเป็นรหัสผ่านที่นี่

  5. ตรวจสอบ URL ที่ JDBC ในการเชื่อมต่อฐานข้อมูล MySQL โดยใช้ Java คุณต้องมี JDBC URL ในรูปแบบต่อไปนี้:

    JDBC: MySQL: // hostname: พอร์ต / databasename
    • hostname: ชื่อโฮสต์ที่ติดตั้งเซิร์ฟเวอร์ MySQL หากติดตั้งในเครื่องเดียวกับที่คุณเรียกใช้รหัส Java คุณก็สามารถใช้งานlocalhostได้ นอกจากนี้ยังสามารถที่อยู่ IP 127.0.0.1เช่น หากคุณพบปัญหาการเชื่อมต่อและการใช้งาน127.0.0.1แทนที่จะlocalhostแก้ไขแล้วแสดงว่าคุณประสบปัญหาในการกำหนดค่าเครือข่าย / DNS / โฮสต์

    • port: พอร์ต TCP / IP ที่เซิร์ฟเวอร์ MySQL ฟัง 3306นี้เป็นค่าเริ่มต้น

    • databasename: ชื่อของฐานข้อมูลที่คุณต้องการเชื่อมต่อ javabaseที่

    ดังนั้น URL สุดท้ายควรมีลักษณะดังนี้:

    JDBC: MySQL: // localhost: 3306 / javabase
  6. ทดสอบการเชื่อมต่อไปยัง MySQL โดยใช้ Java สร้างคลาส Java อย่างง่ายด้วยmain()วิธีการทดสอบการเชื่อมต่อ

    String url = "jdbc:mysql://localhost:3306/javabase";
    String username = "java";
    String password = "password";
    
    System.out.println("Connecting database...");
    
    try (Connection connection = DriverManager.getConnection(url, username, password)) {
        System.out.println("Database connected!");
    } catch (SQLException e) {
        throw new IllegalStateException("Cannot connect the database!", e);
    }

    หากคุณได้รับSQLException: No suitable driverหมายความว่าไดรเวอร์ JDBC ไม่ได้โหลดอัตโนมัติเลยหรือ JDBC URL นั้นไม่ถูกต้อง (เช่นไม่รู้จักไดรเวอร์ที่โหลดมา) โดยทั่วไปแล้วไดรเวอร์ JDBC 4.0 ควรมีการโหลดอัตโนมัติเมื่อคุณเพิ่งวางใน runtime classpath หากต้องการยกเว้นรายการใดรายการหนึ่งคุณสามารถโหลดได้ด้วยตนเองดังนี้:

    System.out.println("Loading driver...");
    
    try {
        Class.forName("com.mysql.jdbc.Driver");
        System.out.println("Driver loaded!");
    } catch (ClassNotFoundException e) {
        throw new IllegalStateException("Cannot find the driver in the classpath!", e);
    }

    โปรดทราบว่าไม่จำเป็นต้องnewInstance()มีการโทรที่นี่ มันเป็นเพียงการแก้ไขปัญหาเก่าและรถ คำอธิบายที่นี่ หากบรรทัดนี้เกิดขึ้นดังนั้นไฟล์ JAR ที่มีคลาสไดรเวอร์ JDBC จะไม่ถูกวางใน classpathorg.gjt.mm.mysql.DriverClassNotFoundException

    โปรดทราบว่าคุณไม่จำเป็นต้องโหลดไดรเวอร์ทุกครั้ง ก่อนเชื่อมต่อ เพียงครั้งเดียวระหว่างการเริ่มต้นแอปพลิเคชันก็เพียงพอแล้ว

    หากคุณได้รับ a SQLException: Connection refusedหรือConnection timed outMySQL เฉพาะCommunicationsException: Communications link failureหมายความว่าฐานข้อมูลนั้นไม่สามารถเข้าถึงได้เลย อาจมีสาเหตุต่อไปนี้อย่างน้อยหนึ่งอย่าง:

    1. ที่อยู่ IP หรือชื่อโฮสต์ใน JDBC URL ไม่ถูกต้อง
    2. ชื่อโฮสต์ใน JDBC URL ไม่ได้รับการยอมรับจากเซิร์ฟเวอร์ DNS ในเครื่อง
    3. หมายเลขพอร์ตหายไปหรือไม่ถูกต้องใน JDBC URL
    4. เซิร์ฟเวอร์ DB ไม่ทำงาน
    5. เซิร์ฟเวอร์ DB ไม่ยอมรับการเชื่อมต่อ TCP / IP
    6. เซิร์ฟเวอร์ฐานข้อมูลขาดการเชื่อมต่อ
    7. บางสิ่งระหว่าง Java และ DB กำลังบล็อกการเชื่อมต่อเช่นไฟร์วอลล์หรือพร็อกซี

    ในการแก้ปัญหาข้อใดข้อหนึ่งให้ทำตามคำแนะนำต่อไปนี้:

    1. pingตรวจสอบและทดสอบพวกเขาด้วย
    2. รีเฟรช DNS หรือใช้ที่อยู่ IP ใน JDBC URL แทน
    3. ตรวจสอบว่าเป็นไปตามmy.cnfMySQL DB
    4. เริ่มฐานข้อมูล
    5. ตรวจสอบว่ามีการเริ่มต้น mysqld --skip-networking optionโดยไม่ต้อง
    6. เริ่มต้น DB finallyและแก้ไขรหัสของคุณตามที่จะปิดการเชื่อมต่อใน
    7. ปิดใช้งานไฟร์วอลล์และ / หรือกำหนดค่าไฟร์วอลล์ / พร็อกซีเพื่ออนุญาต / ส่งต่อพอร์ต

    โปรดทราบว่าการปิดConnectionเป็นสิ่งสำคัญอย่างยิ่ง หากคุณไม่ปิดการเชื่อมต่อและรับจำนวนมากในเวลาอันสั้นฐานข้อมูลอาจขาดการเชื่อมต่อและแอปพลิเคชันของคุณอาจหยุดทำงาน มักจะได้รับConnectionในงบtry-with-resources หรือถ้าคุณยังไม่ได้ใช้ Java 7 ให้ปิดบล็อกfinallyของมันอย่างชัดเจน try-finallyการปิดfinallyเป็นเพียงเพื่อให้แน่ใจว่าจะปิดเช่นกันในกรณีที่มีข้อยกเว้น นอกจากนี้ยังนำไปใช้Statement, และPreparedStatementResultSet

นั่นคือเท่าที่กังวลการเชื่อมต่อ คุณสามารถค้นหาที่นี่กวดวิชาสูงขึ้นวิธีการโหลดและเก็บ fullworthy Java วัตถุรูปแบบในฐานข้อมูลด้วยความช่วยเหลือของระดับ DAO พื้นฐาน


การใช้รูปแบบ Singleton สำหรับการเชื่อมต่อฐานข้อมูลเป็นวิธีที่ไม่ดี ดูหมู่คำถามอื่น ๆ : http://stackoverflow.com/q/9428573/ นี่เป็นความผิดพลาดอันดับ 1


39

เริ่มต้นค่าคงที่ฐานข้อมูล

สร้างชื่อผู้ใช้ฐานข้อมูลคุณสมบัติรหัสผ่าน URL และไดรเวอร์คงที่การ จำกัด การโพลเป็นต้น

// init database constants
// com.mysql.jdbc.Driver
private static final String DATABASE_DRIVER = "com.mysql.cj.jdbc.Driver";
private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/database_name";
private static final String USERNAME = "root";
private static final String PASSWORD = "";
private static final String MAX_POOL = "250"; // set your own limit

เริ่มต้นการเชื่อมต่อและคุณสมบัติ

เมื่อสร้างการเชื่อมต่อแล้วจะเป็นการดีกว่าที่จะจัดเก็บเพื่อนำมาใช้ซ้ำ

// init connection object
private Connection connection;
// init properties object
private Properties properties;

สร้างคุณสมบัติ

วัตถุคุณสมบัติเก็บข้อมูลการเชื่อมต่อตรวจสอบว่ามีการตั้งค่าแล้ว

// create properties
private Properties getProperties() {
    if (properties == null) {
        properties = new Properties();
        properties.setProperty("user", USERNAME);
        properties.setProperty("password", PASSWORD);
        properties.setProperty("MaxPooledStatements", MAX_POOL);
    }
    return properties;
}

เชื่อมต่อฐานข้อมูล

ตอนนี้เชื่อมต่อกับฐานข้อมูลโดยใช้ค่าคงที่และคุณสมบัติเริ่มต้น

// connect database
public Connection connect() {
    if (connection == null) {
        try {
            Class.forName(DATABASE_DRIVER);
            connection = DriverManager.getConnection(DATABASE_URL, getProperties());
        } catch (ClassNotFoundException | SQLException e) {
            // Java 7+
            e.printStackTrace();
        }
    }
    return connection;
}

ตัดการเชื่อมต่อฐานข้อมูล

เมื่อคุณดำเนินการกับฐานข้อมูลเสร็จแล้วให้ปิดการเชื่อมต่อ

// disconnect database
public void disconnect() {
    if (connection != null) {
        try {
            connection.close();
            connection = null;
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

ทุกอย่างเข้าด้วยกัน

ใช้คลาสนี้MysqlConnectโดยตรงหลังจากเปลี่ยน database_name ชื่อผู้ใช้และรหัสผ่านเป็นต้น

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class MysqlConnect {
    // init database constants
    private static final String DATABASE_DRIVER = "com.mysql.cj.jdbc.Driver";
    private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/database_name";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "";
    private static final String MAX_POOL = "250";

    // init connection object
    private Connection connection;
    // init properties object
    private Properties properties;

    // create properties
    private Properties getProperties() {
        if (properties == null) {
            properties = new Properties();
            properties.setProperty("user", USERNAME);
            properties.setProperty("password", PASSWORD);
            properties.setProperty("MaxPooledStatements", MAX_POOL);
        }
        return properties;
    }

    // connect database
    public Connection connect() {
        if (connection == null) {
            try {
                Class.forName(DATABASE_DRIVER);
                connection = DriverManager.getConnection(DATABASE_URL, getProperties());
            } catch (ClassNotFoundException | SQLException e) {
                e.printStackTrace();
            }
        }
        return connection;
    }

    // disconnect database
    public void disconnect() {
        if (connection != null) {
            try {
                connection.close();
                connection = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

วิธีใช้?

เริ่มต้นคลาสฐานข้อมูล

// !_ note _! this is just init
// it will not create a connection
MysqlConnect mysqlConnect = new MysqlConnect();

ที่อื่นในรหัสของคุณ ...

String sql = "SELECT * FROM `stackoverflow`";
try {
    PreparedStatement statement = mysqlConnect.connect().prepareStatement(sql);
    ... go on ...
    ... go on ...
    ... DONE ....
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    mysqlConnect.disconnect();
}

นี่คือทั้งหมด:)หากมีสิ่งใดที่ต้องปรับปรุงแก้ไข! หวังว่านี่จะเป็นประโยชน์


ทำเครื่องหมายแต่ละชั้นเรียนจำเป็นต้องรักษาอินสแตนซ์ MysqlConnect แยกต่างหากของตัวเองเปิดอยู่ตลอดเวลา - สมมติว่าพวกเขาต้องการปฏิสัมพันธ์กับข้อมูลหรือไม่ ฉันแค่สงสัยว่าการตั้งค่านี้ทำงานระหว่างคลาสได้อย่างไร
Michael Sims

ในสถานที่com.mysql.jdbc.Driverนี้jdbc:mysql://localhost:3306/stocksควรใช้เป็นอดีตเลิกใช้
Chaudhry Waqas

หากคุณกำลังจะไปยังชื่อบัญชี hardwire รหัสผ่านชื่อฐานข้อมูล ฯลฯ วิธีนี้จะไม่สำคัญ เพียงใส่รายละเอียดทั้งหมดเหล่านี้ลงในสตริง JDBC URL (รวมถึงขนาดสระ ... )
Stephen C

24
String url = "jdbc:mysql://127.0.0.1:3306/yourdatabase";
String user = "username";
String password = "password";

// Load the Connector/J driver
Class.forName("com.mysql.jdbc.Driver").newInstance();
// Establish connection to MySQL
Connection conn = DriverManager.getConnection(url, user, password);

ฐานข้อมูลของคุณอยู่ที่นี่? ชื่อฐานข้อมูล
Koray Tugay

newInstance ()ไม่จำเป็น ใช่ไหม?
Mohamed Ennahdi El Idrissi

Nope มันไม่ใช่ และเนื่องจาก Java 6 วิธีการทั้งหมดนี้ล้าสมัย และชื่อคลาสไดรเวอร์ก็เปลี่ยนไปและ ....
สตีเฟนซี

12

นี่คือขั้นต่ำสุดที่คุณต้องได้รับข้อมูลจากฐานข้อมูล MySQL:

Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection
   ("jdbc:mysql://localhost:3306/foo", "root", "password");

Statement stmt = conn.createStatement();
stmt.execute("SELECT * FROM `FOO.BAR`");
stmt.close();
conn.close();

เพิ่มการจัดการข้อยกเว้นการกำหนดค่า ฯลฯ เพื่อลิ้มรส


3
ทำไมคุณต้องClass.forName(...).newInstance()?
Don Cheadle

5
@mmcrae คุณทำไม่ได้ตั้งแต่ปี 2007
มาร์ควิสแห่ง Lorne

3

การเชื่อมต่อ MySQL JDBC กับ useSSL

private String db_server = BaseMethods.getSystemData("db_server");
private String db_user = BaseMethods.getSystemData("db_user");
private String db_password = BaseMethods.getSystemData("db_password");

private String connectToDb() throws Exception {
   String jdbcDriver = "com.mysql.jdbc.Driver";
   String dbUrl = "jdbc:mysql://" + db_server  +
        "?verifyServerCertificate=false" +
        "&useSSL=true" +
        "&requireSSL=true";
    System.setProperty(jdbcDriver, "");
    Class.forName(jdbcDriver).newInstance();

    Connection conn = DriverManager.getConnection(dbUrl, db_user, db_password);
    Statement statement = conn.createStatement();
    String query = "SELECT EXTERNAL_ID FROM offer_letter where ID =" + "\"" + letterID + "\"";
    ResultSet resultSet = statement.executeQuery(query);
    resultSet.next();
    return resultSet.getString(1);
}

2

คุณต้องมีตัวเชื่อมต่อ mysql ใน classpath ของคุณ

ใน Java JDBC API สร้างทุกอย่างด้วยฐานข้อมูล ใช้ JDBC เราสามารถเขียนแอปพลิเคชัน Java เป็น
1 ส่งแบบสอบถามหรืออัปเดต SQL เป็นฐานข้อมูล (ฐานข้อมูลเชิงสัมพันธ์ใด ๆ ) 2. เรียกดูและประมวลผลผลลัพธ์จากฐานข้อมูล

ด้วยสามขั้นตอนด้านล่างเราสามารถดึงข้อมูลจากฐานข้อมูลใด ๆ

Connection con = DriverManager.getConnection(
                     "jdbc:myDriver:DatabaseName",
                     dBuserName,
                     dBuserPassword);

Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table");

while (rs.next()) {
    int x = rs.getInt("a");
    String s = rs.getString("b");
    float f = rs.getFloat("c");
}

2

รหัสสั้นและหวาน

try {       
    Class.forName("com.mysql.jdbc.Driver");
    System.out.println("Driver Loaded");
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testDB","root","");
    //Database Name - testDB, Username - "root", Password - ""
    System.out.println("Connected...");         
} catch(Exception e) {
    e.printStackTrace();
}

สำหรับ SQL Server 2012

try {
    String url = "jdbc:sqlserver://KHILAN:1433;databaseName=testDB;user=Khilan;password=Tuxedo123"; 
    //KHILAN is Host    and 1433 is port number     
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    System.out.println("Driver Loaded");
    conn = DriverManager.getConnection(url);
    System.out.println("Connected...");
} catch(Exception e) {
    e.printStackTrace();
}

1

Connectionผมก็ใช้เวลาที่ผ่านมามันก็มองเช่นวิธีที่ง่ายที่สุด แต่ยังมีข้อเสนอแนะเพื่อให้มีifคำสั่งที่ว่า

Connection con = DriverManager.getConnection(
                     "jdbc:myDriver:DatabaseName",
                     dBuserName,
                     dBuserPassword);
if (con != null){
 //..handle your code there 
}

หรืออะไรทำนองนั้น :)

อาจมีบางกรณีในขณะที่getConnectionสามารถกลับnull :)


1

ท่านสามารถเข้าดูทุกขั้นตอนสู่ฐานข้อมูลการเชื่อมต่อจากโปรแกรม Java ที่นี่ สำหรับฐานข้อมูลอื่นคุณเพียงแค่ต้องเปลี่ยนไดรเวอร์ในขั้นตอนแรกเท่านั้น โปรดตรวจสอบให้แน่ใจว่าคุณได้ระบุเส้นทางที่ถูกต้องไปยังฐานข้อมูลและแก้ไขชื่อผู้ใช้และรหัสผ่าน

เยี่ยมชมhttp://apekshit.com/t/51/Steps-to-connect-Database-using-JAVA


1
วิธี
  • ในการตั้งค่าไดรเวอร์ให้เรียกใช้ตัวอย่างอย่างรวดเร็ว
1. Go to https://dev.mysql.com/downloads/connector/j/, get the latest version of Connector/J

2. Remember to set the classpath to include the path of the connector jar file.
If we don't set it correctly, below errors can occur:

No suitable driver found for jdbc:mysql://127.0.0.1:3306/msystem_development

java.lang.ClassNotFoundException: com.mysql.jdbc:Driver
  • เพื่อตั้งค่า CLASSPATH

วิธีที่ 1: ตั้งค่าตัวแปร CLASSPATH

export CLASSPATH=".:mysql-connector-java-VERSION.jar"
java MyClassFile

ในคำสั่งข้างต้นฉันได้ตั้ง CLASSPATH ไปยังโฟลเดอร์ปัจจุบันและไฟล์ mysql-connector-java-VERSION.jar ดังนั้นเมื่อjava MyClassFileคำสั่งดำเนินการตัวเรียกใช้งานจาวาจะพยายามโหลดคลาส Java ทั้งหมดใน CLASSPATH และพบว่าDriveข้อผิดพลาด class => BOOM หายไป

วิธีที่ 2:

java -cp .:mysql-connector-java-VERSION.jar MyClassFile

หมายเหตุ: Class.forName ("com.mysql.jdbc.Driver"); เลิกใช้แล้วในขณะนี้ 2019 เม.ย.

หวังว่าสิ่งนี้จะช่วยให้ใครบางคน!


-1

การเชื่อมต่อ MySql JDBC:

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

Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/DatabaseName","Username","Password");         
Statement stmt=con.createStatement();            
stmt = con.createStatement();
ResultSet rs=stmt.executeQuery("Select * from Table");  

-1

ดาวน์โหลดไดรเวอร์ JDBC

ลิงค์ดาวน์โหลด (เลือกแพลตฟอร์มอิสระ): https://dev.mysql.com/downloads/connector/j/

ย้ายไดรเวอร์ JDBC ไปยัง C Drive

เปิดเครื่องรูดไฟล์และย้ายไปที่ C: \ drive เส้นทางคนขับของคุณควรเป็นเช่นนั้นC:\mysql-connector-java-8.0.19\mysql-connector-java-8.0.19

รัน Java ของคุณ

java -cp "C:\mysql-connector-java-8.0.19\mysql-connector-java-8.0.19\mysql-connector-java-8.0.19.jar" testMySQL.java

testMySQL.java

import java.sql.*;
import java.io.*;

public class testMySQL {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
        try
        {  
            Class.forName("com.mysql.cj.jdbc.Driver");  
            Connection con=DriverManager.getConnection(  
                "jdbc:mysql://localhost:3306/db?useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","root","");  
            Statement stmt=con.createStatement();  
            ResultSet rs=stmt.executeQuery("show databases;");  
            System.out.println("Connected");  
        }
        catch(Exception e)
        {
            System.out.println(e);
        }

    }  

}

ป้อนคำอธิบายรูปภาพที่นี่


-2

รหัสย่อ

public class DB {

    public static Connection c;

    public static Connection getConnection() throws Exception {
        if (c == null) {
            Class.forName("com.mysql.jdbc.Driver");
            c =DriverManager.getConnection("jdbc:mysql://localhost:3306/DATABASE", "USERNAME", "Password");
        }
        return c;
    }

    // Send data TO Database
    public static void setData(String sql) throws Exception {
        DB.getConnection().createStatement().executeUpdate(sql);
    }

    // Get Data From Database
    public static ResultSet getData(String sql) throws Exception {
        ResultSet rs = DB.getConnection().createStatement().executeQuery(sql);
        return rs;
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.