Java MySQL 連接
java mysql 連接
java 通過使用 jdbc 來連接 mysql 數據庫。java 連接 mysql 需要專用的驅動包,官方下載地址為:http://dev.mysql.com/downloads/connector/j/,解壓后得到 jar 庫文件,然后在項目中導入該庫文件。
本范例使用的是 eclipse,導入 jar 包:
mysql 8.0 以上版本的數據庫連接有所不同:
-
1、mysql 8.0 以上版本驅動包版本 mysql-connector-java-8.0.16.jar。
-
2、com.mysql.jdbc.driver 更換為 com.mysql.cj.jdbc.driver。
-
mysql 8.0 以上版本不需要建立 ssl 連接的,需要顯式關閉。
-
allowpublickeyretrieval=true 允許客戶端從服務器獲取公鑰。
-
最后還需要設置 cst。
加載驅動與連接數據庫方式如下:
class.forname("com.mysql.cj.jdbc.driver"); conn = drivermanager.getconnection("jdbc:mysql://localhost:3306/test_demo?usessl=false&allowpublickeyretrieval=true&servertimezone=utc","root","password");
1. 創(chuàng)建測試數據
接下來我們在 mysql 中創(chuàng)建 yapf 數據庫,并創(chuàng)建 websites 數據表,表結構如下:
create table `websites` ( `id` int(11) not null auto_increment, `name` char(20) not null default '' comment '站點名稱', `url` varchar(255) not null default '', `alexa` int(11) not null default '0' comment 'alexa 排名', `country` char(10) not null default '' comment '國家', primary key (`id`) ) engine=innodb auto_increment=10 default charset=utf8;
插入一些數據:
insert into `websites` values ('1', 'google', 'https://www.google.cm/', '1', 'usa'); insert into `websites` values ('2', '淘寶', 'https://www.taobao.com/', '13', 'cn'),; insert into `websites` values ('3', '碩編程', 'http://aalaour.cn/', '888', ''); insert into `websites` values ('4', '微博', 'http://weibo.com/', '20', 'cn'); insert into `websites` values ('5', 'facebook', 'https://www.facebook.com/', '3', 'usa');
數據表顯示如下:
2. 連接數據庫
以下范例使用了 jdbc 連接 mysql 數據庫,注意一些數據如用戶名,密碼需要根據你的開發(fā)環(huán)境來配置:
package com.yapf.test; import java.sql.*; public class mysqldemo { // mysql 8.0 以下版本 - jdbc 驅動名及數據庫 url static final string jdbc_driver = "com.mysql.jdbc.driver"; static final string db_url = "jdbc:mysql://localhost:3306/yapf"; // mysql 8.0 以上版本 - jdbc 驅動名及數據庫 url //static final string jdbc_driver = "com.mysql.cj.jdbc.driver"; //static final string db_url = "jdbc:mysql://localhost:3306/yapf?usessl=false&allowpublickeyretrieval=true&servertimezone=utc"; // 數據庫的用戶名與密碼,需要根據自己的設置 static final string user = "root"; static final string pass = "123456"; public static void main(string[] args) { connection conn = null; statement stmt = null; try{ // 注冊 jdbc 驅動 class.forname(jdbc_driver); // 打開鏈接 system.out.println("連接數據庫..."); conn = drivermanager.getconnection(db_url,user,pass); // 執(zhí)行查詢 system.out.println(" 范例化statement對象..."); stmt = conn.createstatement(); string sql; sql = "select id, name, url from websites"; resultset rs = stmt.executequery(sql); // 展開結果集數據庫 while(rs.next()){ // 通過字段檢索 int id = rs.getint("id"); string name = rs.getstring("name"); string url = rs.getstring("url"); // 輸出數據 system.out.print("id: " + id); system.out.print(", 站點名稱: " + name); system.out.print(", 站點 url: " + url); system.out.print("\n"); } // 完成后關閉 rs.close(); stmt.close(); conn.close(); }catch(sqlexception se){ // 處理 jdbc 錯誤 se.printstacktrace(); }catch(exception e){ // 處理 class.forname 錯誤 e.printstacktrace(); }finally{ // 關閉資源 try{ if(stmt!=null) stmt.close(); }catch(sqlexception se2){ }// 什么都不做 try{ if(conn!=null) conn.close(); }catch(sqlexception se){ se.printstacktrace(); } } system.out.println("goodbye!"); } }