Hướng dẫn what is connector j in mysql? - trình kết nối j trong mysql là gì?

Tải xuống cộng đồng MySQL

Đầu nối/j

  • Tính khả dụng chung (GA) phát hành
  • Lưu trữ
  • Hướng dẫn what is connector j in mysql? - trình kết nối j trong mysql là gì?

Đầu nối/j 8.0.31

Chọn hệ điều hành:



Tải xuống Windows được đề xuất:

Hướng dẫn what is connector j in mysql? - trình kết nối j trong mysql là gì?

Trình kết nối MySQL/J là trình điều khiển JDBC chính thức cho MySQL. Trình kết nối MySQL/J 8.0 tương thích với tất cả các phiên bản MySQL bắt đầu bằng MySQL 5.6. Ngoài ra, Trình kết nối MySQL/J 8.0 hỗ trợ X Devapi mới để phát triển với MySQL Server 8.0.

Tài liệu trực tuyến:

  • Trình kết nối MySQL/Hướng dẫn cài đặt J
  • Tài liệu
  • Trình kết nối MySQL/j x tham chiếu devapi (yêu cầu đầu nối/j 8.0)
  • thay đổi lịch sử

Trình kết nối MySQL/J 8.0 rất được khuyến khích sử dụng với MySQL Server 8.0, 5.7 và 5.6. Vui lòng nâng cấp lên đầu nối MySQL/J 8.0.

Vui lòng báo cáo bất kỳ lỗi hoặc sự không nhất quán nào bạn quan sát thấy cơ sở dữ liệu lỗi của chúng tôi. Cảm ơn bạn đã hỗ trợ của bạn!
Thank you for your support!

trừu tượng

Hướng dẫn này mô tả cách cài đặt, định cấu hình và phát triển các ứng dụng cơ sở dữ liệu bằng Trình kết nối MySQL/J 8.0, trình điều khiển JDBC và X Devapi để liên lạc với các máy chủ MySQL.

Trình kết nối MySQL/J 8.0 rất được khuyến khích sử dụng với MySQL Server 8.0 và 5.7. Vui lòng nâng cấp lên đầu nối MySQL/J 8.0.

Để biết ghi chú chi tiết các thay đổi trong mỗi bản phát hành của Trình kết nối/J 8.0, hãy xem Ghi chú phát hành MYSQL Connect/J 8.0.

Để biết thông tin pháp lý, bao gồm thông tin cấp phép, hãy xem lời nói đầu và thông báo pháp lý.

Để được giúp đỡ trong việc sử dụng MySQL, vui lòng truy cập diễn đàn MySQL, nơi bạn có thể thảo luận về các vấn đề của mình với người dùng MySQL khác.

Tài liệu được tạo vào ngày: 2022-11-14 (Sửa đổi: 74517)

Trình kết nối MySQL/J, như một triển khai nghiêm ngặt của API JDBC, vượt qua tất cả các thử nghiệm trong phiên bản có sẵn công khai của bộ kiểm tra tuân thủ JDBC của Oracle. Thông số kỹ thuật của JDBC linh hoạt về cách thực hiện chức năng nhất định. Phần này cung cấp chi tiết về cấp độ giao diện theo các quyết định thực hiện có thể ảnh hưởng đến cách bạn mã hóa các ứng dụng với Trình kết nối MYSQL/J.

  • BÃI

    Bạn có thể mô phỏng các đốm màu với các trình định vị bằng cách thêm thuộc tính emulateLocators=true vào URL JDBC của bạn. Sử dụng phương pháp này, trình điều khiển sẽ trì hoãn tải dữ liệu BLOB thực tế cho đến khi bạn truy xuất dữ liệu khác và sau đó sử dụng các phương thức truy xuất (getInputStream(), getBytes(), v.v.) trên luồng dữ liệu Blob.

    Bạn phải sử dụng bí danh cột với giá trị của cột với tên thực tế của Blob, ví dụ:

    SELECT id, 'data' as blob_data from blobtable

    Bạn cũng phải tuân theo các quy tắc sau:

    • SELECT phải tham khảo chỉ một bảng. Bảng phải có một khóa chính.

    • SELECT phải bí danh tên cột Blob ban đầu, được chỉ định là một chuỗi, thành một tên thay thế.

    • SELECT phải bao gồm tất cả các cột tạo nên khóa chính.

    Việc triển khai Blob không cho phép sửa đổi tại chỗ (chúng là các bản sao, theo báo cáo của phương pháp DatabaseMetaData.locatorsUpdateCopies()). Do đó, hãy sử dụng các phương thức

    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
                  java.sql.ResultSet.CONCUR_READ_ONLY);
    stmt.setFetchSize(Integer.MIN_VALUE);
    0 hoặc
    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
                  java.sql.ResultSet.CONCUR_READ_ONLY);
    stmt.setFetchSize(Integer.MIN_VALUE);
    1 (trong trường hợp các bộ kết quả có thể cập nhật) để lưu các thay đổi trở lại cơ sở dữ liệu.

  • Sự liên quan

    Phương thức

    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
                  java.sql.ResultSet.CONCUR_READ_ONLY);
    stmt.setFetchSize(Integer.MIN_VALUE);
    2 không ping máy chủ để xác định xem nó có khả dụng không. Theo thông số kỹ thuật của JDBC, nó chỉ trả về true nếu
    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
                  java.sql.ResultSet.CONCUR_READ_ONLY);
    stmt.setFetchSize(Integer.MIN_VALUE);
    3 đã được gọi trên kết nối. Nếu bạn cần xác định xem kết nối có còn hợp lệ hay không, hãy đưa ra một truy vấn đơn giản, chẳng hạn như
    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
                  java.sql.ResultSet.CONCUR_READ_ONLY);
    stmt.setFetchSize(Integer.MIN_VALUE);
    4. Trình điều khiển sẽ ném một ngoại lệ nếu kết nối không còn hợp lệ.

  • Databasemetadata

    Thông tin chính của nước ngoài (________ 15/________ 16 và

    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
                  java.sql.ResultSet.CONCUR_READ_ONLY);
    stmt.setFetchSize(Integer.MIN_VALUE);
    7) chỉ có sẵn từ các bảng
    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
                  java.sql.ResultSet.CONCUR_READ_ONLY);
    stmt.setFetchSize(Integer.MIN_VALUE);
    8. Trình điều khiển sử dụng
    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
                  java.sql.ResultSet.CONCUR_READ_ONLY);
    stmt.setFetchSize(Integer.MIN_VALUE);
    9 để truy xuất thông tin này, vì vậy nếu bất kỳ công cụ lưu trữ nào khác thêm hỗ trợ cho các khóa nước ngoài, người lái cũng sẽ hỗ trợ họ một cách minh bạch.

  • Đã chuẩn bị

    Hai biến thể của các câu lệnh đã chuẩn bị được thực hiện bởi Trình kết nối/J, các câu lệnh được chuẩn bị phía máy khách và phía máy chủ. Các câu lệnh được chuẩn bị phía máy khách được sử dụng theo mặc định vì các phiên bản MySQL sớm không hỗ trợ tính năng câu lệnh đã chuẩn bị hoặc có vấn đề với việc thực hiện nó. Các câu lệnh được chuẩn bị phía máy chủ và bộ kết quả được mã hóa nhị phân được sử dụng khi máy chủ hỗ trợ chúng. Để cho phép sử dụng các câu lệnh được chuẩn bị phía máy chủ, hãy đặt

    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    0.

    Hãy cẩn thận khi sử dụng câu lệnh được chuẩn bị phía máy chủ với các tham số lớn được đặt bằng cách sử dụng

    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    1,
    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    2, ________ 23, ________ 24,
    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    5,
    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    6,
    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    7 hoặc
    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    8. Để thực hiện lại câu lệnh với bất kỳ tham số lớn nào được thay đổi thành tham số không quy định, hãy gọi
    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    9 và đặt lại tất cả các tham số. Lý do cho điều này là như sau:large parameters that are set using
    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    1,
    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    2,
    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    3,
    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    4,
    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    5,
    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    6,
    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    7, or
    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    8. To re-execute the statement with any large parameter changed to a nonlarge parameter, call
    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    9 and set all parameters again. The reason for this is as follows:

    • Trong cả hai câu lệnh được chuẩn bị phía máy chủ và mô phỏng phía máy khách, dữ liệu lớn chỉ được trao đổi khi emulateLocators=true0 được gọi.

    • Khi đã được thực hiện, luồng được sử dụng để đọc dữ liệu ở phía máy khách được đóng (theo thông số kỹ thuật JDBC) và không thể đọc lại từ đó.

    • Nếu một tham số thay đổi từ lớn sang không phải, trình điều khiển phải đặt lại trạng thái phía máy chủ của câu lệnh đã chuẩn bị để cho phép tham số đang được thay đổi để thay thế giá trị lớn trước đó. Điều này loại bỏ tất cả các dữ liệu lớn đã được gửi đến máy chủ, do đó yêu cầu dữ liệu phải được trình bày lại, sử dụng

      conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
      stmt = conn.createStatement();
      stmt.setFetchSize(100);
      rs = stmt.executeQuery("SELECT * FROM your_table_here");
      1,
      conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
      stmt = conn.createStatement();
      stmt.setFetchSize(100);
      rs = stmt.executeQuery("SELECT * FROM your_table_here");
      2, ________ 23, ________ 34,
      conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
      stmt = conn.createStatement();
      stmt.setFetchSize(100);
      rs = stmt.executeQuery("SELECT * FROM your_table_here");
      5,
      conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
      stmt = conn.createStatement();
      stmt.setFetchSize(100);
      rs = stmt.executeQuery("SELECT * FROM your_table_here");
      6,
      conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
      stmt = conn.createStatement();
      stmt.setFetchSize(100);
      rs = stmt.executeQuery("SELECT * FROM your_table_here");
      7 hoặc
      conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
      stmt = conn.createStatement();
      stmt.setFetchSize(100);
      rs = stmt.executeQuery("SELECT * FROM your_table_here");
      8.

    Do đó, để thay đổi loại tham số thành một tham số thành một tham số, bạn phải gọi

    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
    9 và đặt tất cả các tham số của câu lệnh đã chuẩn bị một lần nữa trước khi nó có thể được thực hiện lại.

  • Kết quả

    Theo mặc định, các kết quả được truy xuất hoàn toàn và lưu trữ trong bộ nhớ. Trong hầu hết các trường hợp, đây là cách hiệu quả nhất để vận hành và do thiết kế giao thức mạng MYSQL, dễ thực hiện hơn. Nếu bạn đang làm việc với các kết quả có một số lượng lớn hàng hoặc giá trị lớn và không thể phân bổ không gian heap trong JVM của bạn cho bộ nhớ cần thiết, bạn có thể yêu cầu trình điều khiển phát trực tuyến kết quả trở lại một hàng cùng một lúc.

    Để kích hoạt chức năng này, hãy tạo một thể hiện getInputStream()0 theo cách sau:

    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
                  java.sql.ResultSet.CONCUR_READ_ONLY);
    stmt.setFetchSize(Integer.MIN_VALUE);

    Sự kết hợp của một tập kết quả chỉ đọc, chỉ đọc, với kích thước tìm nạp getInputStream()1 đóng vai trò là tín hiệu cho trình điều khiển để truyền kết quả đặt hàng từng hàng. Sau đó, bất kỳ bộ kết quả nào được tạo với câu lệnh sẽ được truy xuất từng hàng.

    Có một số cảnh báo với phương pháp này. Bạn phải đọc tất cả các hàng trong tập kết quả (hoặc đóng nó) trước khi bạn có thể phát hành bất kỳ truy vấn nào khác trên kết nối hoặc một ngoại lệ sẽ được ném.

    Các khóa này sớm nhất có thể được phát hành (cho dù chúng là khóa cấp bảng hoặc khóa cấp độ hàng trong một số công cụ lưu trữ khác như

    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
                  java.sql.ResultSet.CONCUR_READ_ONLY);
    stmt.setFetchSize(Integer.MIN_VALUE);
    8) là khi câu lệnh hoàn tất.

    Nếu câu lệnh nằm trong phạm vi giao dịch, thì khóa được phát hành khi giao dịch hoàn thành (ngụ ý rằng câu lệnh cần hoàn thành trước). Như với hầu hết các cơ sở dữ liệu khác, các câu lệnh không hoàn tất cho đến khi tất cả các kết quả đang chờ xử lý trên câu lệnh được đọc hoặc kết quả hoạt động được đóng cho câu lệnh được đóng.

    Do đó, nếu sử dụng kết quả phát trực tuyến, hãy xử lý chúng càng nhanh càng tốt nếu bạn muốn duy trì quyền truy cập đồng thời vào các bảng được tham chiếu bởi câu lệnh tạo ra tập kết quả.

    Một cách khác là sử dụng phát trực tuyến dựa trên con trỏ để truy xuất số lượng hàng đã đặt mỗi lần. Điều này có thể được thực hiện bằng cách đặt thuộc tính kết nối getInputStream()4 thành TRUE, sau đó gọi getInputStream()5 với getInputStream()6 là số lượng hàng mong muốn được tìm nạp mỗi lần:

    conn = DriverManager.getConnection("jdbc:mysql://localhost/?useCursorFetch=true", "user", "s3cr3t");
    stmt = conn.createStatement();
    stmt.setFetchSize(100);
    rs = stmt.executeQuery("SELECT * FROM your_table_here");
  • Bản tường trình

    Trình kết nối/J bao gồm hỗ trợ cho cả getInputStream()7 và getInputStream()8. Cả hai đều yêu cầu một kết nối riêng để đưa ra câu lệnh getInputStream()9. Trong trường hợp getBytes()0, việc triển khai tạo ra một luồng bổ sung để xử lý chức năng hết thời gian.

    Ghi chú

    Thất bại trong việc hủy tuyên bố cho getBytes()0 có thể tự biểu hiện là getBytes()2 thay vì không im lặng, vì hiện tại không có cách nào để bỏ chặn các chủ đề đang thực hiện truy vấn bị hủy do hết hạn thời gian chờ và thay vào đó là ném ngoại lệ.

    MySQL không hỗ trợ con trỏ SQL và trình điều khiển JDBC không mô phỏng chúng, vì vậy getBytes()3 không có hiệu lực.

    Trình kết nối/J cũng cung cấp hai phương pháp bổ sung:

    • getBytes()4 đặt một ví dụ getBytes()5 sẽ được sử dụng để gửi dữ liệu đến máy chủ MySQL cho câu lệnh getBytes()6 thay vì getBytes()7 hoặc getBytes()8 đại diện cho đường dẫn được đưa ra như một đối số cho câu lệnh.

      Luồng này sẽ được đọc để hoàn thành khi thực hiện câu lệnh getBytes()6 và sẽ tự động đóng bởi trình điều khiển, vì vậy nó cần được đặt lại trước mỗi cuộc gọi đến SELECT0 sẽ khiến máy chủ MySQL yêu cầu dữ liệu thực hiện yêu cầu cho getBytes()6.

      Nếu giá trị này được đặt thành SELECT2, trình điều khiển sẽ trở lại bằng cách sử dụng getBytes()7 hoặc getBytes()8 theo yêu cầu.

    • SELECT5 Trả về ví dụ getBytes()5 sẽ được sử dụng để gửi dữ liệu để phản hồi câu lệnh getBytes()6.

      Phương thức này trả về SELECT2 nếu không có luồng như vậy được đặt bằng getBytes()4.


Trình kết nối MySQL J được cài đặt ở đâu?

Tệp JAR tại C: \ Files File \ MySQL \ MySQL Connector J \ MySQL-Connonector-Java-5.1.C:\Program Files\MySQL\MySQL Connector J\mysql-connector-java-5.1.

JDBC là gì và mục đích của nó là gì?

Kết nối cơ sở dữ liệu Java ™ (JDBC) là đặc tả Javasoft của Giao diện lập trình ứng dụng tiêu chuẩn (API) cho phép các chương trình Java truy cập các hệ thống quản lý cơ sở dữ liệu.API JDBC bao gồm một tập hợp các giao diện và các lớp được viết bằng ngôn ngữ lập trình Java.the JavaSoft specification of a standard application programming interface (API) that allows Java programs to access database management systems. The JDBC API consists of a set of interfaces and classes written in the Java programming language.

Chuỗi kết nối JDBC cho MySQL là gì?

URL kết nối: URL kết nối cho cơ sở dữ liệu MySQL là JDBC: MySQL: // LocalHost: 3306/Sonoo trong đó JDBC là API, MySQL là cơ sở dữ liệu, LocalHost là tên máy chủ mà MySQL đang chạy, chúng tôi cũng có thể sử dụng địa chỉ IP IP, 3306 là số cổng và Sonoo là tên cơ sở dữ liệu.jdbc:mysql://localhost:3306/sonoo where jdbc is the API, mysql is the database, localhost is the server name on which mysql is running, we may also use IP address, 3306 is the port number and sonoo is the database name.

Máy điều khiển JDBC MySQL ở đâu?

JAR 'được lưu trữ trong "C: \ Program Files \ MySQL \ MySQL Connector J \".Lưu ý: Đường dẫn lớp là đường dẫn mà môi trường thời gian chạy Java (JRE) tìm kiếm các lớp và các tệp tài nguyên khác.C:\Program Files\MySQL\MySQL Connector J\". Note : The class path is the path that the Java Runtime Environment (JRE) searches for classes and other resource files.