Tôi có thể sử dụng MySQL với Java không?

Trong bài viết này, chúng ta sẽ tìm hiểu cách kết nối với cơ sở dữ liệu MySQL từ mã Java và thực hiện các truy vấn đơn giản để truy xuất và cập nhật dữ liệu. Để truy cập cơ sở dữ liệu, chúng tôi sẽ sử dụng API JDBC (Kết nối cơ sở dữ liệu Java), là một phần của thư viện Java tiêu chuẩn

JDBC cho phép kết nối với bất kỳ cơ sở dữ liệu nào. Postgres, MySQL, SQL Server, Oracle, v.v. - trong sự hiện diện của việc triển khai trình điều khiển thích hợp cần thiết cho kết nối. Đối với cơ sở dữ liệu MySQL, chúng tôi sẽ sử dụng trình điều khiển JDBC Loại 4 từ mysql-connector-java-5. 1. 23 ngăn. gói lọ

Nó được viết bằng Java thuần túy, có nghĩa là chúng tôi sẽ không cần bất kỳ thư viện gốc hoặc cầu nối ODBC nào. Tất cả những gì chúng ta cần làm là đặt tệp JAR vào thư mục chứa trong CLASSPATH. Tệp JAR chứa lớp com. mysql. jdbc. Trình điều khiển cần thiết để kết nối với MySQL. Nếu nó không xuất hiện trong CLASSPATH, java. lang thang. classNotFoundException sẽ bị ném vào thời gian chạy, vì vậy hãy đảm bảo bạn đặt đường dẫn chính xác

Nhân tiện, nếu bạn đang tìm một cuốn sách hay về cách sử dụng JDBC, hãy chú ý đến Lập trình cơ sở dữ liệu thực tế với Java (Ying Bai). Đây là một cuốn sách tương đối mới và nó bao gồm hai cơ sở dữ liệu phổ biến nhất. Máy chủ Oracle và SQL 2008. Cuốn sách sử dụng NetBeans IDE để làm ví dụ và mô tả tất cả các công cụ cần thiết để làm việc với cơ sở dữ liệu trong Java. Đây là một cuốn sách tuyệt vời cho người mới bắt đầu và lập trình viên có kinh nghiệm

KẾT NỐI CƠ SỞ DỮ LIỆU MYSQL SỬ DỤNG JDBC

Để kết nối cơ sở dữ liệu MySQL, chúng ta cần bốn điều

  • Chuỗi kết nối JDBC (ví dụ. jdbc. mysql. //máy chủ cục bộ. 3306/kiểm tra)
  • Tên người dùng (gốc)
  • Mật khẩu (gốc)
  • Cơ sở dữ liệu với một số bảng chẳng hạn (e. g. cơ sở dữ liệu sách)

Chuỗi kết nối cho MySQL bắt đầu bằng jdbc. mysql. Đây là tên của giao thức kết nối, theo sau là máy chủ và cổng kết nối mà cơ sở dữ liệu đang chạy trên đó. Trong trường hợp của chúng tôi, đó là máy chủ cục bộ với cổng mặc định là 3306 (trừ khi bạn thay đổi nó trong khi cài đặt). Phần tiếp theo là kiểm tra — tên của cơ sở dữ liệu đã tồn tại trong MySQL. Chúng ta có thể tạo một bảng Books

CREATE TABLE `books` (
`id` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`author` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

và lấp đầy nó bằng những cuốn sách hay

INSERT INTO test.books (id, `name`, author)
VALUES (1, 'Effective Java', 'Joshua Bloch');
INSERT INTO test.books (id, `name`, author)
VALUES (2, 'Java Concurrency in Practice', 'Brian Goetz');

CHƯƠNG TRÌNH JAVA SỬ DỤNG CƠ SỞ DỮ LIỆU CỦA

Bây giờ hãy viết một chương trình Java, chương trình này sẽ kết nối với cơ sở dữ liệu của chúng tôi đang chạy trên máy chủ cục bộ. Điều quan trọng cần nhớ là bạn cần đóng kết nối, truy vấn và kết quả thực hiện sau khi hoàn thành công việc với chúng

Điều quan trọng là phải đóng chúng trong khối cuối cùng, với trình bao bọc thử/bắt riêng của nó, bởi vì chính phương thức close() có thể đưa ra một ngoại lệ, điều này sẽ dẫn đến rò rỉ tài nguyên. Để biết thêm thông tin, bạn có thể tham khảo bài viết này. Ngoài ra, bạn có thể sử dụng trình bao bọc dùng thử tài nguyên, xuất hiện trong Java 7. Hơn nữa, đây là cách tiêu chuẩn để làm việc với các tài nguyên trong Java 1. 7

`id` int(11) NOT NULL,0
`id` int(11) NOT NULL,1
`id` int(11) NOT NULL,2
`id` int(11) NOT NULL,3
`id` int(11) NOT NULL,4

`id` int(11) NOT NULL,5
`id` int(11) NOT NULL,6
`id` int(11) NOT NULL,7
`id` int(11) NOT NULL,8
`id` int(11) NOT NULL,9
`name` varchar(50) NOT NULL,0

`name` varchar(50) NOT NULL,1
`name` varchar(50) NOT NULL,2
`name` varchar(50) NOT NULL,3
`name` varchar(50) NOT NULL,4

`name` varchar(50) NOT NULL,5
`name` varchar(50) NOT NULL,6
`name` varchar(50) NOT NULL,7
`name` varchar(50) NOT NULL,8

`name` varchar(50) NOT NULL,9
`author` varchar(50) NOT NULL,0

`author` varchar(50) NOT NULL,1
`author` varchar(50) NOT NULL,2
`author` varchar(50) NOT NULL,3

`author` varchar(50) NOT NULL,4
`author` varchar(50) NOT NULL,5

`author` varchar(50) NOT NULL,6
`author` varchar(50) NOT NULL,7

`author` varchar(50) NOT NULL,8
`author` varchar(50) NOT NULL,9
PRIMARY KEY (`id`)0
PRIMARY KEY (`id`)1

PRIMARY KEY (`id`)2
PRIMARY KEY (`id`)3
PRIMARY KEY (`id`)4
PRIMARY KEY (`id`)5
PRIMARY KEY (`id`)6
PRIMARY KEY (`id`)7
PRIMARY KEY (`id`)8
PRIMARY KEY (`id`)1
PRIMARY KEY (`id`)1

PRIMARY KEY (`id`)1

Lần đầu tiên bạn chạy nó, bạn có thể gặp lỗi Không tìm thấy trình điều khiển phù hợp cho jdbc. mysql nếu trình điều khiển MySQL không có trong CLASSPATH

) ENGINE=InnoDB DEFAULT CHARSET=latin12
) ENGINE=InnoDB DEFAULT CHARSET=latin13
) ENGINE=InnoDB DEFAULT CHARSET=latin14
) ENGINE=InnoDB DEFAULT CHARSET=latin15
) ENGINE=InnoDB DEFAULT CHARSET=latin16
) ENGINE=InnoDB DEFAULT CHARSET=latin17
) ENGINE=InnoDB DEFAULT CHARSET=latin18

Thêm tệp JAR mong muốn vào đường dẫn và chạy lại chương trình. Một lỗi phổ biến khác là chỉ định một bảng trong dòng kết nối. jdbc. mysql. //máy chủ cục bộ. 3306/bài kiểm tra/sách. Trong trường hợp này, ngoại lệ sau sẽ được ném

) ENGINE=InnoDB DEFAULT CHARSET=latin19
INSERT INTO test.books (id, `name`, author)0
INSERT INTO test.books (id, `name`, author)1
INSERT INTO test.books (id, `name`, author)2
INSERT INTO test.books (id, `name`, author)3
INSERT INTO test.books (id, `name`, author)4
INSERT INTO test.books (id, `name`, author)5
INSERT INTO test.books (id, `name`, author)6

Khởi chạy thành công chương trình sẽ hiển thị như sau

INSERT INTO test.books (id, `name`, author)7

Kết quả là đúng vì chúng tôi chỉ có hai cuốn sách trên bàn. “Java hiệu quả” và “Thực hành đồng thời Java”

Nhân tiện, nếu bạn có trình điều khiển tại thời điểm biên dịch, nhưng nó không có trong thời gian chạy, bạn sẽ nhận được ngoại lệ java. lang thang. ClassNotFoundException. com. mysql. jdbc. Tài xế. Bạn có thể đọc về cách sửa lỗi này tại đây

CHÚNG TÔI NHẬN DỮ LIỆU VỚI MỘT SELECT QUERY TRONG JDBC

Để nhận dữ liệu từ cơ sở dữ liệu, bạn có thể thực hiện truy vấn CHỌN. Trong ví dụ đầu tiên, chúng tôi đã sử dụng nó, nhưng chỉ lấy số dòng. Bây giờ chúng tôi sẽ tự trả lại các hàng. Phần lớn chương trình sẽ không thay đổi, ngoại trừ truy vấn SQL và mã trả về dữ liệu từ đối tượng ResultSet

INSERT INTO test.books (id, `name`, author)8

`author` varchar(50) NOT NULL,7

`author` varchar(50) NOT NULL,8
VALUES (1, 'Effective Java', 'Joshua Bloch');1
VALUES (1, 'Effective Java', 'Joshua Bloch');2
VALUES (1, 'Effective Java', 'Joshua Bloch');3
VALUES (1, 'Effective Java', 'Joshua Bloch');4
PRIMARY KEY (`id`)1

Mã này sẽ hiển thị như sau

VALUES (1, 'Effective Java', 'Joshua Bloch');6
VALUES (1, 'Effective Java', 'Joshua Bloch');7

Có một số điểm cần chú ý. rs. Phương thức getInt(1) được sử dụng để lấy một cột có kiểu số nguyên, trong trường hợp của chúng tôi, đó là cột “id”. Các chỉ mục trong JDBC bắt đầu bằng một, vì vậy rs. getInt(1) sẽ trả về cột đầu tiên dưới dạng số nguyên

Trong trường hợp bạn chỉ định một chỉ số không chính xác (nhiều nhà phát triển gọi rs. getInt(0) để lấy cột đầu tiên), một ngoại lệ InvalidColumnIndexException sẽ được ném ra. Truy cập các cột bằng một chỉ mục có nhiều lỗi, vì vậy tốt hơn là sử dụng tên cột như rs. getInt(“id”)

Bạn có thể đọc thêm về điều này trong bài viết này. Phương thức getString() được sử dụng để lấy các giá trị chuỗi từ cơ sở (e. g. VARCHAR). Vòng lặp sẽ được thực hiện cho đến khi rs. next() trả về false. Điều này có nghĩa là các dòng đã hết. Trong trường hợp của chúng tôi, có hai hàng trong bảng, vì vậy chu trình sẽ được thực hiện hai lần, hiển thị thông tin về sách từ bảng

CHÚNG TÔI THÊM DỮ LIỆU BẰNG MỘT QUERY CHÈN VÀO JDBC

Việc thêm dữ liệu hơi khác so với việc lấy dữ liệu. chúng ta chỉ sử dụng truy vấn INSERT thay vì truy vấn SELECT và phương thức execUpdate() thay vì execQuery(). Phương thức này được sử dụng cho các truy vấn INSERT, UPDATE và DELETE cũng như cho các biểu thức DDL SQL như CREATE, ALTER hoặc DROP

Các lệnh này không trả về bất kỳ kết quả nào, vì vậy chúng tôi xóa tất cả các tham chiếu Bộ kết quả trong mã và sửa đổi truy vấn cho phù hợp

VALUES (1, 'Effective Java', 'Joshua Bloch');8
VALUES (1, 'Effective Java', 'Joshua Bloch');9

`author` varchar(50) NOT NULL,6
INSERT INTO test.books (id, `name`, author)1

Sau khi bắt đầu chương trình, bạn có thể kiểm tra bảng trong DBMS. Lần này bạn sẽ thấy ba mục trong bảng

Giờ đây, bạn có thể kết nối với MySQL từ một ứng dụng Java và thực hiện các truy vấn CHỌN, CHÈN, XÓA và CẬP NHẬT theo cách tương tự như trong MySQL GUI. Chúng ta sử dụng đối tượng Connection để kết nối, đối tượng ResultSet để đọc kết quả truy vấn

Đảm bảo rằng máy chủ MySQL đang chạy và mysql-connector-java-5. 1. thùng 17. jar nằm trong CLASSPATH trước khi kết nối để tránh ClassNotFoundException

Khi bạn hiểu kết nối và các truy vấn đơn giản, bạn nên tìm hiểu cách sử dụng Các câu lệnh đã chuẩn bị sẵn trong Java để tránh SQL injection. Trong mã chiến đấu, bạn phải luôn sử dụng các truy vấn được chuẩn bị trước và liên kết biến

Tại sao nên sử dụng MySQL cho Java?

MySQL cung cấp khả năng kết nối cho các ứng dụng khách được phát triển bằng ngôn ngữ lập trình Java với MySQL Connector/J. Trình kết nối/J triển khai API Kết nối cơ sở dữ liệu Java (JDBC), cũng như một số phần mở rộng giá trị gia tăng của nó. Nó cũng hỗ trợ X DevAPI mới.

Làm thế nào để viết MySQL trong Java?

Ví dụ kết nối ứng dụng Java với cơ sở dữ liệu mysql .
nhập java. sql. *;
lớp MysqlCon{
public static void main(String args[]){
Tầng lớp. forName("com. mysql. jdbc. Tài xế");
Kết nối con=Trình quản lý trình điều khiển. getConnection(
// ở đây sonoo là tên cơ sở dữ liệu, root là tên người dùng và mật khẩu
Tuyên bố stmt=con. createStatement();

Cơ sở dữ liệu nào tương thích với Java?

Cơ sở dữ liệu Java . Java DB là bản phân phối được hỗ trợ của cơ sở dữ liệu Apache Derby mã nguồn mở của Oracle. Tính dễ sử dụng, tuân thủ tiêu chuẩn, bộ tính năng đầy đủ và dấu chân nhỏ khiến nó trở thành cơ sở dữ liệu lý tưởng cho các nhà phát triển Java. Java DB được viết bằng ngôn ngữ lập trình Java, cung cấp khả năng di động "viết một lần, chạy mọi nơi".

SQL có thể kết nối với Java không?

Kết nối Java với Microsoft SQL Server giúp tự động hóa quyền truy cập vào cơ sở dữ liệu nơi bạn có thể trực tiếp xử lý dữ liệu và làm việc trên chúng trong một tập lệnh tự động . Bạn có thể sử dụng kết nối này để xác minh kết quả, xóa dữ liệu và thậm chí cập nhật dữ liệu cụ thể theo yêu cầu của bạn.