Hướng dẫn is mysql written in java? - mysql có được viết bằng java không?
Sửa đổi lần cuối vào ngày 6 tháng 7 năm 2020 Show
Đây là hướng dẫn Java cho cơ sở dữ liệu MySQL. Nó bao gồm những điều cơ bản của chương trình MySQL trong Java với JDBC. Zetcode có một cuốn sách điện tử hoàn chỉnh cho MySQL Java: MySQL Java Lập trình sách điện tử. Trong hướng dẫn này, chúng tôi sử dụng trình điều khiển đầu nối MYSQL/J. Đây là trình điều khiển JDBC chính thức cho MySQL. Các ví dụ đã được tạo và thử nghiệm trên Ubuntu Linux. Bạn cũng có thể muốn kiểm tra hướng dẫn Java, hướng dẫn Java PostgreSQL, hướng dẫn MySQL hoặc hướng dẫn JDBCTemplate Spring trên ZetCode. JDBCJDBC là API cho ngôn ngữ lập trình Java xác định cách khách hàng có thể truy cập cơ sở dữ liệu. Nó cung cấp các phương thức để truy vấn và cập nhật dữ liệu trong cơ sở dữ liệu. JDBC được định hướng theo cơ sở dữ liệu quan hệ. Từ quan điểm kỹ thuật, API là một tập hợp các lớp trong gói java.sql. Để sử dụng JDBC với một cơ sở dữ liệu cụ thể, chúng tôi cần một trình điều khiển JDBC cho cơ sở dữ liệu đó. JDBC là một nền tảng cho lập trình cơ sở dữ liệu trong Java. Ngày nay, nó được coi là cấp độ rất thấp và dễ bị lỗi. Các giải pháp như mybatis hoặc jdbctemplate đã được tạo ra để giảm bớt gánh nặng của lập trình JDBC. Tuy nhiên, dưới mui xe, các giải pháp này vẫn sử dụng JDBC. JDBC là một phần của nền tảng phiên bản tiêu chuẩn Java. JDBC quản lý ba hoạt động lập trình chính này:
Đầu nối MySQL/jĐể kết nối với MySQL trong Java, MySQL cung cấp Trình kết nối MySQL/J, một trình điều khiển thực hiện API JDBC. Trình kết nối MySQL/J là trình điều khiển loại 4 của JDBC. Chỉ định loại 4 có nghĩa là trình điều khiển là triển khai Java thuần túy của giao thức MYSQL và không dựa vào các thư viện máy khách MySQL. Trong hướng dẫn này, chúng tôi sử dụng Trình kết nối MySQL/J 5.1.41, đây là bản phát hành bảo trì của Chi nhánh sản xuất 5.1. Chuỗi kết nốiKết nối cơ sở dữ liệu được xác định với chuỗi kết nối. Nó chứa thông tin như loại cơ sở dữ liệu, tên cơ sở dữ liệu, tên máy chủ và số cổng. Nó cũng có thể chứa các cặp khóa/giá trị bổ sung cho cấu hình. Mỗi cơ sở dữ liệu có định dạng chuỗi kết nối riêng. Sau đây là cú pháp của chuỗi kết nối MySQL: jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...] Có thể chỉ định nhiều máy chủ cho thiết lập chuyển đổi dự phòng máy chủ. Các mặt hàng trong ngoặc vuông là tùy chọn. Nếu không có máy chủ được chỉ định, tên máy chủ mặc định là localhost. Nếu cổng cho máy chủ không được chỉ định, nó mặc định là 3306, số cổng mặc định cho các máy chủ MySQL. jdbc:mysql://localhost:3306/testdb?useSSL=false Đây là một ví dụ về chuỗi kết nối MySQL. String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false";1 được gọi là giao thức phụ và không đổi cho MySQL. Chúng tôi kết nối với String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false";2 trên cổng tiêu chuẩn MySQL 3306. Tên cơ sở dữ liệu là String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false";3. Các cặp khóa/giá trị bổ sung tuân theo ký tự dấu câu hỏi (?). String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false";4 nói với MySQL rằng sẽ không có kết nối an toàn. Về cơ sở dữ liệu MySQLMySQL là một hệ thống quản lý cơ sở dữ liệu nguồn mở hàng đầu. Nó là một người dùng nhiều người dùng, hệ thống quản lý cơ sở dữ liệu đa luồng. MySQL đặc biệt phổ biến trên web. Đây là một phần của nền tảng đèn rất phổ biến bao gồm Linux, Apache, MySQL và PHP. Hiện tại MySQL thuộc sở hữu của Oracle. Cơ sở dữ liệu MySQL có sẵn trên hầu hết các nền tảng HĐH quan trọng. Nó chạy trên BSD Unix, Linux, Windows hoặc Mac OS. Wikipedia và YouTube sử dụng MySQL. Các trang web này quản lý hàng triệu truy vấn mỗi ngày. MySQL có hai phiên bản: Hệ thống máy chủ MySQL và hệ thống nhúng MySQL. Thiết lập MySQLTrong phần này, chúng tôi sẽ cài đặt máy chủ MySQL, tạo cơ sở dữ liệu String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false";3 và người dùng thử nghiệm. $ sudo apt-get install mysql-server Lệnh này cài đặt máy chủ MySQL và nhiều gói khác. Trong khi cài đặt gói, chúng tôi được nhắc nhập mật khẩu cho tài khoản gốc MySQL. Tiếp theo, chúng tôi sẽ tạo một người dùng cơ sở dữ liệu mới và cơ sở dữ liệu mới. Chúng tôi sử dụng máy khách String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false";6. $ sudo service mysql status mysql start/running, process 5129 Chúng tôi kiểm tra xem máy chủ MySQL có đang chạy không. Nếu không, chúng ta cần khởi động máy chủ. Trên Ubuntu Linux, điều này có thể được thực hiện với lệnh String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false";7. $ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43 Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec) Chúng tôi sử dụng ứng dụng máy khách theo dõi MySQL để kết nối với máy chủ. Chúng tôi kết nối với cơ sở dữ liệu bằng tài khoản gốc. Chúng tôi hiển thị tất cả các cơ sở dữ liệu có sẵn với câu lệnh String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false";8. mysql> CREATE DATABASE testdb; Query OK, 1 row affected (0.02 sec) Chúng tôi tạo một cơ sở dữ liệu String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false";3 mới. Chúng tôi sẽ sử dụng cơ sở dữ liệu này trong suốt hướng dẫn. mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye Chúng tôi tạo một người dùng cơ sở dữ liệu mới. Chúng tôi cấp tất cả các đặc quyền cho người dùng này cho tất cả các bảng của cơ sở dữ liệu TestDB. Tệp MavenChúng tôi sử dụng tệp maven sau: pom.xml
Tệp POM có sự phụ thuộc cho trình điều khiển MySQL. Chúng tôi cũng bao gồm jdbc:mysql://localhost:3306/testdb?useSSL=false00 để thực hiện các chương trình Java từ Maven. Giữa các thẻ jdbc:mysql://localhost:3306/testdb?useSSL=false01, chúng tôi cung cấp tên đầy đủ của ứng dụng. Phiên bản Java MySQLNếu chương trình sau chạy OK, thì chúng tôi đã cài đặt mọi thứ OK. Chúng tôi kiểm tra phiên bản của máy chủ MySQL. JdbcMySQLVersion.java package com.zetcode; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Level; import java.util.logging.Logger; public class JdbcMySQLVersion { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false"; String user = "testuser"; String password = "test623"; String query = "SELECT VERSION()"; try (Connection con = DriverManager.getConnection(url, user, password); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query)) { if (rs.next()) { System.out.println(rs.getString(1)); } } catch (SQLException ex) { Logger lgr = Logger.getLogger(JdbcMySQLVersion.class.getName()); lgr.log(Level.SEVERE, ex.getMessage(), ex); } } } Chúng tôi kết nối với cơ sở dữ liệu và nhận được một số thông tin về máy chủ MySQL. String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false"; Đây là URL kết nối cho cơ sở dữ liệu MySQL. Mỗi trình điều khiển có một cú pháp khác nhau cho URL. Trong trường hợp của chúng tôi, chúng tôi cung cấp một máy chủ, một cổng và tên cơ sở dữ liệu. jdbc:mysql://localhost:3306/testdb?useSSL=false0 Chúng tôi thiết lập kết nối với cơ sở dữ liệu, sử dụng URL kết nối, tên người dùng và mật khẩu. Kết nối được thiết lập với phương pháp jdbc:mysql://localhost:3306/testdb?useSSL=false02. Phương thức jdbc:mysql://localhost:3306/testdb?useSSL=false03 của đối tượng kết nối tạo đối tượng jdbc:mysql://localhost:3306/testdb?useSSL=false04 để gửi các câu lệnh SQL đến cơ sở dữ liệu. Phương thức jdbc:mysql://localhost:3306/testdb?useSSL=false05 của đối tượng kết nối thực thi câu lệnh SQL đã cho, trả về một đối tượng ____106. jdbc:mysql://localhost:3306/testdb?useSSL=false06 là một bảng dữ liệu được trả về bởi một câu lệnh SQL cụ thể. Cú pháp jdbc:mysql://localhost:3306/testdb?useSSL=false08 đảm bảo rằng các tài nguyên được làm sạch cuối cùng. jdbc:mysql://localhost:3306/testdb?useSSL=false1 Một đối tượng jdbc:mysql://localhost:3306/testdb?useSSL=false06 duy trì một con trỏ chỉ vào hàng dữ liệu hiện tại của nó. Ban đầu con trỏ được định vị trước hàng đầu tiên. Phương thức jdbc:mysql://localhost:3306/testdb?useSSL=false10 di chuyển con trỏ sang hàng tiếp theo. Nếu không còn hàng, phương thức trả về jdbc:mysql://localhost:3306/testdb?useSSL=false11. Phương thức jdbc:mysql://localhost:3306/testdb?useSSL=false12 lấy giá trị của một cột được chỉ định. Cột đầu tiên có chỉ mục 1. jdbc:mysql://localhost:3306/testdb?useSSL=false2 Trong trường hợp ngoại lệ, chúng tôi đăng nhập thông báo lỗi. Đối với ví dụ bảng điều khiển này, thông báo được hiển thị trong thiết bị đầu cuối. jdbc:mysql://localhost:3306/testdb?useSSL=false3 Chúng tôi chạy chương trình từ dòng lệnh. Tùy chọn jdbc:mysql://localhost:3306/testdb?useSSL=false13 của Manen chạy Maven ở chế độ yên tĩnh; tức là chúng ta chỉ thấy thông báo lỗi. Tạo và điền vào bảngTiếp theo, chúng tôi sẽ tạo các bảng cơ sở dữ liệu và điền vào chúng bằng dữ liệu. Những bảng này sẽ được sử dụng trong suốt hướng dẫn này. mysql_tables.sql jdbc:mysql://localhost:3306/testdb?useSSL=false4 Các lệnh SQL tạo bốn bảng cơ sở dữ liệu: jdbc:mysql://localhost:3306/testdb?useSSL=false14, jdbc:mysql://localhost:3306/testdb?useSSL=false15, jdbc:mysql://localhost:3306/testdb?useSSL=false16 và jdbc:mysql://localhost:3306/testdb?useSSL=false17. Các bảng thuộc loại innodb. Cơ sở dữ liệu Innodb hỗ trợ các ràng buộc và giao dịch chính của nước ngoài. Chúng tôi đặt một ràng buộc khóa nước ngoài trên cột jdbc:mysql://localhost:3306/testdb?useSSL=false18 của bảng jdbc:mysql://localhost:3306/testdb?useSSL=false15. Chúng tôi điền vào các bảng jdbc:mysql://localhost:3306/testdb?useSSL=false14 và jdbc:mysql://localhost:3306/testdb?useSSL=false15 bằng dữ liệu ban đầu. jdbc:mysql://localhost:3306/testdb?useSSL=false5 Chúng tôi sử dụng lệnh jdbc:mysql://localhost:3306/testdb?useSSL=false22 để thực thi tập lệnh jdbc:mysql://localhost:3306/testdb?useSSL=false23. Java MySQL đã chuẩn bị các câu lệnhBây giờ chúng tôi sẽ quan tâm đến bản thân với những tuyên bố đã chuẩn bị. Khi chúng tôi viết các câu lệnh được chuẩn bị, chúng tôi sử dụng các trình giữ chỗ thay vì viết trực tiếp các giá trị vào các câu lệnh. Chuẩn bị báo cáo tăng bảo mật và hiệu suất. Trong Java A jdbc:mysql://localhost:3306/testdb?useSSL=false24 là một đối tượng đại diện cho câu lệnh SQL được biên dịch trước. JdbcPrepared.java jdbc:mysql://localhost:3306/testdb?useSSL=false6 Chúng tôi thêm một tác giả mới vào bảng jdbc:mysql://localhost:3306/testdb?useSSL=false14. jdbc:mysql://localhost:3306/testdb?useSSL=false7 Ở đây chúng tôi tạo ra một tuyên bố đã chuẩn bị. Khi chúng tôi viết các câu lệnh được chuẩn bị, chúng tôi sử dụng các trình giữ chỗ thay vì viết trực tiếp các giá trị vào các câu lệnh. Các tuyên bố chuẩn bị nhanh hơn và bảo vệ chống lại các cuộc tấn công tiêm SQL. jdbc:mysql://localhost:3306/testdb?useSSL=false26 là một trình giữ chỗ sẽ được lấp đầy sau đó. jdbc:mysql://localhost:3306/testdb?useSSL=false8 Một giá trị bị ràng buộc với trình giữ chỗ. jdbc:mysql://localhost:3306/testdb?useSSL=false9 Tuyên bố đã chuẩn bị được thực thi. Chúng tôi sử dụng phương thức jdbc:mysql://localhost:3306/testdb?useSSL=false27 của đối tượng câu lệnh khi chúng tôi không mong đợi bất kỳ dữ liệu nào được trả về. Đây là khi chúng tôi tạo cơ sở dữ liệu hoặc thực thi các câu lệnh jdbc:mysql://localhost:3306/testdb?useSSL=false28, jdbc:mysql://localhost:3306/testdb?useSSL=false29, jdbc:mysql://localhost:3306/testdb?useSSL=false30. $ sudo apt-get install mysql-server0 Chúng tôi có một tác giả mới được chèn vào bàn. Kiểm tra các câu lệnh được chuẩn bị và không chuẩn bị của MySQLĐối với hai ví dụ sau, chúng tôi sẽ sử dụng bảng thử nghiệm. Chúng tôi sẽ thực hiện một tuyên bố bình thường và một tuyên bố đã chuẩn bị 5000 lần. Chúng tôi kiểm tra xem có một số khác biệt về thời gian thực hiện. JdbcNotPreparedTesting.java $ sudo apt-get install mysql-server1 Ví dụ đầu tiên sử dụng đối tượng jdbc:mysql://localhost:3306/testdb?useSSL=false04 bình thường. $ sudo apt-get install mysql-server2 Chúng tôi xây dựng truy vấn và thực hiện nó 5000 lần. $ sudo apt-get install mysql-server3 Nó 4,14 phút để hoàn thành 5000 chèn. JdbcPreparedTesting.java $ sudo apt-get install mysql-server4 Bây giờ chúng tôi sử dụng jdbc:mysql://localhost:3306/testdb?useSSL=false24 để thực hiện cùng một nhiệm vụ. $ sudo apt-get install mysql-server5 Chúng tôi tạo câu lệnh đã chuẩn bị bằng phương pháp jdbc:mysql://localhost:3306/testdb?useSSL=false33. $ sudo apt-get install mysql-server6 Chúng tôi liên kết một giá trị với câu lệnh đã chuẩn bị, thực hiện nó trong một vòng hàng ngàn lần. $ sudo apt-get install mysql-server7 Bây giờ phải mất 3,53 phút để hoàn thành 5000 chèn. Chúng tôi đã lưu 20 giây. Java MySQL truy xuất dữ liệuTiếp theo chúng tôi sẽ chỉ ra cách lấy dữ liệu từ bảng cơ sở dữ liệu. Chúng tôi nhận được tất cả dữ liệu từ bảng jdbc:mysql://localhost:3306/testdb?useSSL=false14. JdbcRetrieve.java $ sudo apt-get install mysql-server8 Chúng tôi nhận được tất cả các tác giả từ bảng jdbc:mysql://localhost:3306/testdb?useSSL=false14 và in chúng vào bảng điều khiển. $ sudo apt-get install mysql-server9 Chúng tôi thực hiện một truy vấn chọn tất cả các cột từ bảng jdbc:mysql://localhost:3306/testdb?useSSL=false14. Chúng tôi sử dụng phương pháp jdbc:mysql://localhost:3306/testdb?useSSL=false05. Phương thức thực thi câu lệnh SQL đã cho, trả về một đối tượng jdbc:mysql://localhost:3306/testdb?useSSL=false06 duy nhất. jdbc:mysql://localhost:3306/testdb?useSSL=false06 là bảng dữ liệu được trả về bởi truy vấn SQL. $ sudo service mysql status mysql start/running, process 51290 Phương pháp jdbc:mysql://localhost:3306/testdb?useSSL=false10 tiến lên con trỏ sang bản ghi tiếp theo. Nó trả về jdbc:mysql://localhost:3306/testdb?useSSL=false11 khi không còn hàng trong tập kết quả. Các phương thức jdbc:mysql://localhost:3306/testdb?useSSL=false42 và jdbc:mysql://localhost:3306/testdb?useSSL=false12 Lấy giá trị của cột được chỉ định trong hàng hiện tại của đối tượng jdbc:mysql://localhost:3306/testdb?useSSL=false06 này dưới dạng jdbc:mysql://localhost:3306/testdb?useSSL=false45 và jdbc:mysql://localhost:3306/testdb?useSSL=false46 của ngôn ngữ lập trình Java. $ sudo service mysql status mysql start/running, process 51291 Chúng tôi thực hiện chương trình; Chúng tôi có ID và tên của các tác giả được in vào bảng điều khiển. Đặc tínhĐó là một thực tế phổ biến để đặt dữ liệu cấu hình bên ngoài chương trình trong một tệp riêng biệt. Bằng cách này, các lập trình viên linh hoạt hơn. Chúng tôi có thể thay đổi người dùng, mật khẩu hoặc URL kết nối mà không cần phải biên dịch lại chương trình. Nó đặc biệt hữu ích trong một môi trường năng động, nơi cần có nhiều thử nghiệm, gỡ lỗi, đảm bảo dữ liệu, v.v. Trong Java, jdbc:mysql://localhost:3306/testdb?useSSL=false47 là một lớp thường được sử dụng cho việc này. Lớp được sử dụng để dễ đọc và lưu các thuộc tính khóa/giá trị. db.properties $ sudo service mysql status mysql start/running, process 51292 Chúng tôi có một tệp jdbc:mysql://localhost:3306/testdb?useSSL=false48 trong đó chúng tôi có ba cặp khóa/giá trị. Chúng được tải động trong quá trình thực hiện chương trình. JdbcProperties.java $ sudo service mysql status mysql start/running, process 51293 Chúng tôi kết nối với cơ sở dữ liệu TestDB và in nội dung của bảng jdbc:mysql://localhost:3306/testdb?useSSL=false14 vào bảng điều khiển. Lần này, chúng tôi tải các thuộc tính kết nối từ một tệp. Chúng không được mã hóa cứng trong Proram. $ sudo service mysql status mysql start/running, process 51294 Lớp jdbc:mysql://localhost:3306/testdb?useSSL=false47 được tạo. Dữ liệu được tải từ tệp được gọi là jdbc:mysql://localhost:3306/testdb?useSSL=false48, trong đó chúng tôi có dữ liệu cấu hình của chúng tôi. $ sudo service mysql status mysql start/running, process 51295 Các giá trị được lấy bằng phương pháp jdbc:mysql://localhost:3306/testdb?useSSL=false52. Dữ liệu Java MySQLTrong ví dụ này, chúng tôi kết nối với cơ sở dữ liệu bằng nguồn dữ liệu. Việc sử dụng nguồn dữ liệu giúp cải thiện hiệu suất và khả năng mở rộng của ứng dụng. Sử dụng một bộ dữ liệu có một số lợi thế so với jdbc:mysql://localhost:3306/testdb?useSSL=false53: tăng tính di động, gộp kết nối và giao dịch phân tán.
jdbc:mysql://localhost:3306/testdb?useSSL=false54 là một lớp để tạo dữ liệu. db.properties $ sudo service mysql status mysql start/running, process 51296 Là các thuộc tính cho cơ sở dữ liệu MySQL. ComLineDSEx.java $ sudo service mysql status mysql start/running, process 51297 Trong ví dụ này, chúng tôi kết nối với cơ sở dữ liệu bằng cách sử dụng dữ liệu. $ sudo service mysql status mysql start/running, process 51298 Các thuộc tính cơ sở dữ liệu được đọc từ tệp jdbc:mysql://localhost:3306/testdb?useSSL=false48. $ sudo service mysql status mysql start/running, process 51299 Một jdbc:mysql://localhost:3306/testdb?useSSL=false54 được tạo và các thuộc tính DataSource được đặt. $ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43 Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)0 Một đối tượng kết nối được tạo từ nguồn dữ liệu. Java mysql nhiều câu lệnhCó thể thực thi nhiều câu lệnh SQL trong một truy vấn. jdbc:mysql://localhost:3306/testdb?useSSL=false57 phải được đặt để bật nhiều câu lệnh trong MySQL. JdbcMulStat.java $ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43 Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)1 Trong ví dụ mã, chúng tôi lấy ba hàng từ bảng jdbc:mysql://localhost:3306/testdb?useSSL=false14. Chúng tôi sử dụng ba câu lệnh jdbc:mysql://localhost:3306/testdb?useSSL=false59 để có ba hàng. $ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43 Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)2 Chúng tôi kích hoạt nhiều truy vấn câu lệnh trong URL cơ sở dữ liệu bằng cách đặt tham số jdbc:mysql://localhost:3306/testdb?useSSL=false57 thành TRUE. $ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43 Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)3 Ở đây chúng tôi có một truy vấn với nhiều tuyên bố. Các tuyên bố được phân tách bằng một dấu chấm phẩy. $ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43 Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)4 Chúng tôi gọi phương thức jdbc:mysql://localhost:3306/testdb?useSSL=false61 của đối tượng câu lệnh đã chuẩn bị. Phương thức trả về giá trị boolean cho biết nếu kết quả đầu tiên là đối tượng jdbc:mysql://localhost:3306/testdb?useSSL=false06. Các kết quả tiếp theo được gọi bằng phương pháp jdbc:mysql://localhost:3306/testdb?useSSL=false63. $ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43 Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)5 Việc xử lý kết quả được thực hiện bên trong vòng jdbc:mysql://localhost:3306/testdb?useSSL=false64. jdbc:mysql://localhost:3306/testdb?useSSL=false06 được truy xuất với cuộc gọi phương thức jdbc:mysql://localhost:3306/testdb?useSSL=false66. Để tìm hiểu nếu có kết quả khác, chúng tôi gọi phương thức jdbc:mysql://localhost:3306/testdb?useSSL=false63. $ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43 Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)6 Đây là đầu ra của ví dụ. Ba hàng đầu tiên được lấy từ bảng jdbc:mysql://localhost:3306/testdb?useSSL=false14. Tiêu đề cột Java MySQLVí dụ sau đây cho thấy cách in các tiêu đề cột bằng dữ liệu từ bảng cơ sở dữ liệu. Chúng tôi gọi tên cột là siêu dữ liệu. Siêu dữ liệu là dữ liệu về dữ liệu cốt lõi trong cơ sở dữ liệu. JdbcColumnHeaders.java $ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43 Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)7 Trong chương trình này, chúng tôi chọn các tác giả từ bảng jdbc:mysql://localhost:3306/testdb?useSSL=false14 và sách của họ từ bảng jdbc:mysql://localhost:3306/testdb?useSSL=false15. Chúng tôi in tên của các cột được trả về trong tập kết quả. Đầu ra được định dạng. $ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43 Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)8 Đây là tuyên bố SQL kết hợp với các tác giả với sách của họ. $ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43 Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)9 Để có được tên cột, chúng ta cần lấy jdbc:mysql://localhost:3306/testdb?useSSL=false71. Nó là một đối tượng có thể được sử dụng để có được thông tin về các loại và thuộc tính của các cột trong một đối tượng jdbc:mysql://localhost:3306/testdb?useSSL=false06. mysql> CREATE DATABASE testdb; Query OK, 1 row affected (0.02 sec)0 Từ siêu dữ liệu thu được, chúng tôi nhận được tên cột. mysql> CREATE DATABASE testdb; Query OK, 1 row affected (0.02 sec)1 Chúng tôi in các tên cột vào bảng điều khiển. mysql> CREATE DATABASE testdb; Query OK, 1 row affected (0.02 sec)2 Chúng tôi in dữ liệu vào bảng điều khiển. Cột đầu tiên rộng 21 ký tự và được căn chỉnh bên trái. mysql> CREATE DATABASE testdb; Query OK, 1 row affected (0.02 sec)3 Đây là đầu ra của chương trình. MySQL Java Auto Auto Frostruction KeysThuộc tính jdbc:mysql://localhost:3306/testdb?useSSL=false73 của MySQL tạo ra một ID duy nhất cho các hàng mới. Ví dụ sau đây cho thấy cách chúng ta có thể sử dụng JDBC để truy xuất giá trị khóa do tự động tạo. JdbcAutoGenKey.java mysql> CREATE DATABASE testdb; Query OK, 1 row affected (0.02 sec)4 Trong ví dụ, chúng tôi thêm một tác giả mới vào một bảng có khóa chính được tự động tự động bởi MySQL. Chúng tôi lấy ID được tạo. mysql> CREATE DATABASE testdb; Query OK, 1 row affected (0.02 sec)5 Bước đầu tiên, chúng ta phải chuyển jdbc:mysql://localhost:3306/testdb?useSSL=false74 cho phương pháp jdbc:mysql://localhost:3306/testdb?useSSL=false33. mysql> CREATE DATABASE testdb; Query OK, 1 row affected (0.02 sec)6 Sau đó, chúng tôi lấy (các) khóa được tạo bằng phương pháp jdbc:mysql://localhost:3306/testdb?useSSL=false76. mysql> CREATE DATABASE testdb; Query OK, 1 row affected (0.02 sec)7 Vì chúng tôi chỉ có một câu lệnh chèn, chúng tôi sử dụng jdbc:mysql://localhost:3306/testdb?useSSL=false77 để điều hướng đến giá trị. mysql> CREATE DATABASE testdb; Query OK, 1 row affected (0.02 sec)8 Đây là một đầu ra mẫu. Mysql java viết hình ảnhMột số người thích đưa hình ảnh của họ vào cơ sở dữ liệu, một số người thích giữ chúng trên hệ thống tệp cho các ứng dụng của họ. Khó khăn về kỹ thuật phát sinh khi chúng ta làm việc với nhiều hình ảnh. Hình ảnh là dữ liệu nhị phân. Cơ sở dữ liệu MySQL có một loại dữ liệu đặc biệt để lưu trữ dữ liệu nhị phân được gọi là jdbc:mysql://localhost:3306/testdb?useSSL=false78 (đối tượng lớn nhị phân). Đối với ví dụ này, chúng tôi sử dụng bảng jdbc:mysql://localhost:3306/testdb?useSSL=false17. JdbcWriteImage.java mysql> CREATE DATABASE testdb; Query OK, 1 row affected (0.02 sec)9 Trong ví dụ trước, chúng tôi đã đọc một hình ảnh PNG từ thư mục làm việc hiện tại và chèn vào bảng jdbc:mysql://localhost:3306/testdb?useSSL=false17. mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye0 Đây là SQL để chèn một hình ảnh. mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye1 Chúng tôi tạo một đối tượng jdbc:mysql://localhost:3306/testdb?useSSL=false81 cho tệp hình ảnh. Để đọc các byte từ tệp này, chúng tôi tạo một đối tượng jdbc:mysql://localhost:3306/testdb?useSSL=false82. mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye2 Luồng nhị phân được đặt thành câu lệnh đã chuẩn bị. Các tham số của phương thức jdbc:mysql://localhost:3306/testdb?useSSL=false83 là chỉ mục tham số để liên kết, luồng đầu vào và số byte trong luồng. jdbc:mysql://localhost:3306/testdb?useSSL=false9 Chúng tôi thực hiện câu lệnh. Mysql java đọc hình ảnhTrong ví dụ trước, chúng tôi đã chèn một hình ảnh vào bảng cơ sở dữ liệu. Bây giờ chúng ta sẽ đọc lại hình ảnh từ bảng. JdbcReadImage.java mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye4 Chúng tôi đọc một hình ảnh từ bảng hình ảnh. mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye5 Chúng tôi chọn một bản ghi từ bảng. mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye6 Đối tượng jdbc:mysql://localhost:3306/testdb?useSSL=false84 được tạo để ghi vào một tệp. Nó có nghĩa là để viết các luồng của các byte thô như dữ liệu hình ảnh. mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye7 Chúng tôi nhận được dữ liệu hình ảnh từ cột jdbc:mysql://localhost:3306/testdb?useSSL=false85 bằng cách gọi phương thức jdbc:mysql://localhost:3306/testdb?useSSL=false86. mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye8 Chúng tôi tìm ra độ dài của dữ liệu Blob. Nói cách khác, chúng tôi nhận được số byte. mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; Query OK, 0 rows affected (0.00 sec) mysql> USE testdb; Database changed mysql> GRANT ALL ON testdb.* TO 'testuser'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> quit; Bye9 Phương pháp jdbc:mysql://localhost:3306/testdb?useSSL=false87 lấy tất cả các byte của đối tượng Blob, như một mảng byte. 0 Các byte được ghi vào luồng đầu ra. Hình ảnh được tạo trên hệ thống tập tin. Hỗ trợ giao dịchMột giao dịch là một đơn vị nguyên tử của các hoạt động cơ sở dữ liệu so với dữ liệu trong một hoặc nhiều cơ sở dữ liệu. Hiệu ứng của tất cả các câu lệnh SQL trong một giao dịch có thể được cam kết với cơ sở dữ liệu hoặc tất cả được quay lại. Cơ sở dữ liệu MySQL có các loại công cụ lưu trữ khác nhau. Phổ biến nhất là các động cơ Myisam và Innodb. Có sự đánh đổi giữa bảo mật dữ liệu và tốc độ cơ sở dữ liệu. Các bảng Myisam nhanh hơn để xử lý và chúng không hỗ trợ các giao dịch. Mặt khác, các bảng InnoDB an toàn hơn so với việc mất dữ liệu. Họ hỗ trợ các giao dịch và chậm hơn để xử lý. JdbcTransaction.java 1 Trong chương trình này, chúng tôi muốn thay đổi tên của tác giả trên hàng đầu tiên của bảng jdbc:mysql://localhost:3306/testdb?useSSL=false14. Chúng ta cũng phải thay đổi những cuốn sách liên quan đến tác giả này. Đây là một ví dụ tốt trong đó một giao dịch là cần thiết. Nếu chúng ta thay đổi tác giả và không thay đổi sách của tác giả, dữ liệu sẽ bị hỏng. 2 Để làm việc với các giao dịch, chúng tôi phải đặt chế độ AutoCommit thành FALSE. Theo mặc định, kết nối cơ sở dữ liệu ở chế độ AutoCommit. Trong chế độ này, mỗi câu lệnh được cam kết vào cơ sở dữ liệu ngay khi nó được thực thi. Một tuyên bố không thể hoàn tác. Khi AutoCommit bị tắt, chúng tôi cam kết các thay đổi bằng cách gọi jdbc:mysql://localhost:3306/testdb?useSSL=false89 hoặc cuộn lại bằng cách gọi phương thức jdbc:mysql://localhost:3306/testdb?useSSL=false90. 3 Câu lệnh SQL thứ ba có lỗi. Không có cột Titl trong bảng. 4 Nếu không có ngoại lệ, giao dịch được cam kết. 5 Trong trường hợp ngoại lệ, giao dịch được quay lại. Không có thay đổi được cam kết với cơ sở dữ liệu. 6 Ứng dụng kết thúc với một ngoại lệ. 7 Giao dịch đã được chuyển trở lại và không có thay đổi nào diễn ra. Tuy nhiên, không có giao dịch, dữ liệu không an toàn. JdbcNoTransaction.java 8 Chúng tôi có cùng một ví dụ. Lần này, không có hỗ trợ giao dịch. 9 Một ngoại lệ được ném một lần nữa. Leo Tolstoy đã không viết Martin Eden; dữ liệu là hỏng. Cập nhật hàng loạtKhi chúng ta cần cập nhật dữ liệu với nhiều câu lệnh, chúng ta có thể sử dụng các bản cập nhật hàng loạt. Cập nhật hàng loạt có sẵn cho jdbc:mysql://localhost:3306/testdb?useSSL=false28, jdbc:mysql://localhost:3306/testdb?useSSL=false29, jdbc:mysql://localhost:3306/testdb?useSSL=false30, các câu lệnh cũng như cho các câu lệnh jdbc:mysql://localhost:3306/testdb?useSSL=false94 và jdbc:mysql://localhost:3306/testdb?useSSL=false95. JdbcBatchUpdate.java package com.zetcode; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Level; import java.util.logging.Logger; public class JdbcMySQLVersion { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false"; String user = "testuser"; String password = "test623"; String query = "SELECT VERSION()"; try (Connection con = DriverManager.getConnection(url, user, password); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query)) { if (rs.next()) { System.out.println(rs.getString(1)); } } catch (SQLException ex) { Logger lgr = Logger.getLogger(JdbcMySQLVersion.class.getName()); lgr.log(Level.SEVERE, ex.getMessage(), ex); } } }0 Đây là một chương trình ví dụ cho một bản cập nhật hàng loạt. Chúng tôi xóa tất cả dữ liệu từ bảng tác giả và chèn dữ liệu mới. Chúng tôi thêm một tác giả mới, Umberto Eco để xem những thay đổi. package com.zetcode; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Level; import java.util.logging.Logger; public class JdbcMySQLVersion { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false"; String user = "testuser"; String password = "test623"; String query = "SELECT VERSION()"; try (Connection con = DriverManager.getConnection(url, user, password); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query)) { if (rs.next()) { System.out.println(rs.getString(1)); } } catch (SQLException ex) { Logger lgr = Logger.getLogger(JdbcMySQLVersion.class.getName()); lgr.log(Level.SEVERE, ex.getMessage(), ex); } } }1 Chúng tôi sử dụng phương thức TEH jdbc:mysql://localhost:3306/testdb?useSSL=false96 để thêm một lệnh mới vào câu lệnh. package com.zetcode; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Level; import java.util.logging.Logger; public class JdbcMySQLVersion { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false"; String user = "testuser"; String password = "test623"; String query = "SELECT VERSION()"; try (Connection con = DriverManager.getConnection(url, user, password); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query)) { if (rs.next()) { System.out.println(rs.getString(1)); } } catch (SQLException ex) { Logger lgr = Logger.getLogger(JdbcMySQLVersion.class.getName()); lgr.log(Level.SEVERE, ex.getMessage(), ex); } } }2 Sau khi thêm tất cả các lệnh, chúng tôi gọi jdbc:mysql://localhost:3306/testdb?useSSL=false97 để thực hiện cập nhật hàng loạt. Phương thức trả về một loạt các thay đổi cam kết. 4 Cập nhật hàng loạt được cam kết trong một giao dịch. package com.zetcode; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Level; import java.util.logging.Logger; public class JdbcMySQLVersion { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false"; String user = "testuser"; String password = "test623"; String query = "SELECT VERSION()"; try (Connection con = DriverManager.getConnection(url, user, password); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query)) { if (rs.next()) { System.out.println(rs.getString(1)); } } catch (SQLException ex) { Logger lgr = Logger.getLogger(JdbcMySQLVersion.class.getName()); lgr.log(Level.SEVERE, ex.getMessage(), ex); } } }4 Chúng tôi gọi jdbc:mysql://localhost:3306/testdb?useSSL=false90 trong trường hợp các bản cập nhật hàng loạt không thành công. package com.zetcode; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Level; import java.util.logging.Logger; public class JdbcMySQLVersion { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false"; String user = "testuser"; String password = "test623"; String query = "SELECT VERSION()"; try (Connection con = DriverManager.getConnection(url, user, password); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query)) { if (rs.next()) { System.out.println(rs.getString(1)); } } catch (SQLException ex) { Logger lgr = Logger.getLogger(JdbcMySQLVersion.class.getName()); lgr.log(Level.SEVERE, ex.getMessage(), ex); } } }5 Chúng tôi thực hiện chương trình jdbc:mysql://localhost:3306/testdb?useSSL=false99. Tuyên bố jdbc:mysql://localhost:3306/testdb?useSSL=false59 cho thấy bảng $ sudo apt-get install mysql-server01 đã được cập nhật thành công. Nó có một tác giả mới, Umerto Eco. Xuất dữ liệu vào tệp CSVVí dụ tiếp theo xuất dữ liệu vào tệp CSV. Chúng tôi cần có quyền tệp thích hợp cho $ sudo apt-get install mysql-server02 của chúng tôi; Nếu không, chúng tôi nhận được thông báo lỗi bị từ chối truy cập. package com.zetcode; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Level; import java.util.logging.Logger; public class JdbcMySQLVersion { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false"; String user = "testuser"; String password = "test623"; String query = "SELECT VERSION()"; try (Connection con = DriverManager.getConnection(url, user, password); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query)) { if (rs.next()) { System.out.println(rs.getString(1)); } } catch (SQLException ex) { Logger lgr = Logger.getLogger(JdbcMySQLVersion.class.getName()); lgr.log(Level.SEVERE, ex.getMessage(), ex); } } }6 Chúng tôi đặt quyền $ sudo apt-get install mysql-server03. package com.zetcode; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Level; import java.util.logging.Logger; public class JdbcMySQLVersion { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false"; String user = "testuser"; String password = "test623"; String query = "SELECT VERSION()"; try (Connection con = DriverManager.getConnection(url, user, password); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query)) { if (rs.next()) { System.out.println(rs.getString(1)); } } catch (SQLException ex) { Logger lgr = Logger.getLogger(JdbcMySQLVersion.class.getName()); lgr.log(Level.SEVERE, ex.getMessage(), ex); } } }7 Vì lý do bảo mật, MySQL bắt đầu với tùy chọn $ sudo apt-get install mysql-server04 được bật, chỉ cho phép làm việc với các tệp trong một thư mục nhất định. Thư mục được chỉ định trong biến $ sudo apt-get install mysql-server05. Trên Windows, đường dẫn giống như $ sudo apt-get install mysql-server06. ExportCSV.java package com.zetcode; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Level; import java.util.logging.Logger; public class JdbcMySQLVersion { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false"; String user = "testuser"; String password = "test623"; String query = "SELECT VERSION()"; try (Connection con = DriverManager.getConnection(url, user, password); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query)) { if (rs.next()) { System.out.println(rs.getString(1)); } } catch (SQLException ex) { Logger lgr = Logger.getLogger(JdbcMySQLVersion.class.getName()); lgr.log(Level.SEVERE, ex.getMessage(), ex); } } }8 Chúng tôi xuất các tác giả và sách tương ứng của họ vào tệp $ sudo apt-get install mysql-server07. package com.zetcode; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Level; import java.util.logging.Logger; public class JdbcMySQLVersion { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false"; String user = "testuser"; String password = "test623"; String query = "SELECT VERSION()"; try (Connection con = DriverManager.getConnection(url, user, password); Statement st = con.createStatement(); ResultSet rs = st.executeQuery(query)) { if (rs.next()) { System.out.println(rs.getString(1)); } } catch (SQLException ex) { Logger lgr = Logger.getLogger(JdbcMySQLVersion.class.getName()); lgr.log(Level.SEVERE, ex.getMessage(), ex); } } }9 Để xuất dữ liệu vào một tệp, chúng tôi sử dụng câu lệnh SQL $ sudo apt-get install mysql-server08. String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false";0 Chúng tôi xác minh dữ liệu. Đây là hướng dẫn Java MySQL. Bạn cũng có thể quan tâm đến hướng dẫn của JDBI, hướng dẫn Java H2, Hướng dẫn Java PostgreSQL, Hướng dẫn Java MongoDB hoặc hướng dẫn MySQL. Java có được sử dụng trong MySQL không?Trong Java, chúng tôi có thể kết nối với cơ sở dữ liệu của mình (MySQL) với JDBC (kết nối cơ sở dữ liệu Java) thông qua mã Java. JDBC là một trong những API tiêu chuẩn cho kết nối cơ sở dữ liệu, sử dụng nó, chúng tôi có thể dễ dàng chạy truy vấn, câu lệnh và cũng tìm nạp dữ liệu từ cơ sở dữ liệu.we can connect to our database(MySQL) with JDBC(Java Database Connectivity) through the Java code. JDBC is one of the standard APIs for database connectivity, using it we can easily run our query, statement, and also fetch data from the database.
MySQL được viết bằng ngôn ngữ nào?MySQL được viết bằng C và C ++.Trình phân tích cú pháp SQL của nó được viết bằng YACC, nhưng nó sử dụng máy phân tích từ vựng được sản xuất tại nhà.C and C++. Its SQL parser is written in yacc, but it uses a home-brewed lexical analyzer.
SQL có dựa trên Java không?Mô tả SQL.Cung cấp API để truy cập và xử lý dữ liệu được lưu trữ trong nguồn dữ liệu (thường là cơ sở dữ liệu quan hệ) bằng ngôn ngữ lập trình JAVATM.API này bao gồm một khung, theo đó các trình điều khiển khác nhau có thể được cài đặt động để truy cập các nguồn dữ liệu khác nhau.Provides the API for accessing and processing data stored in a data source (usually a relational database) using the JavaTM programming language. This API includes a framework whereby different drivers can be installed dynamically to access different data sources.
SQL có phải là một phần của Java không?Tiện ích mở rộng ngôn ngữ Java là một tính năng của SQL Server được sử dụng để thực hiện mã Java bên ngoài.Dữ liệu quan hệ có thể được sử dụng trong mã Java bên ngoài bằng khung mở rộng.Phần mở rộng ngôn ngữ Java là một phần của phần mở rộng ngôn ngữ SQL Server.. The relational data can be used in the external Java code using the extensibility framework. The Java Language Extension is part of SQL Server Language Extensions. |