什么是JDBC呵恢?
JDBC(Java DataBase Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API痒给,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問匿辩,它由一組用Java語言編寫的類和接口組成束凑。JDBC提供了一種基準(zhǔn)杠园,據(jù)此可以構(gòu)建更高級(jí)的工具和接口贮喧,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序筒狠。
簡單地說,JDBC就是用來執(zhí)行SQL語句的一類Java API箱沦,通過JDBC我們可以直接使用Java編程對(duì)關(guān)系數(shù)據(jù)庫進(jìn)行相關(guān)地操作辩恼。
首先,我們得有一個(gè)數(shù)據(jù)庫。
我安裝的MYSQL版本為5.7灶伊,安裝教程可以參考如下的鏈接教程疆前。
http://jingyan.baidu.com/article/7e440953d6f0702fc1e2ef61.html
安裝完成之后,我們打開這里
輸入我們安裝的時(shí)候所設(shè)置的密碼
然后我們輸入下面的命令:show databases;
,注意一定要有分號(hào)聘萨!
如此一來就可以知道我們已經(jīng)成功地安裝好了MYSQL啦峡继。
接下來,我們需要導(dǎo)入一個(gè)jar包到Eclipse中匈挖。
使用JDBC需要在工程中導(dǎo)入對(duì)應(yīng)的jar包碾牌。首先我們創(chuàng)建一個(gè)項(xiàng)目,名字為test儡循,接著我們右鍵test項(xiàng)目舶吗,選擇build path,選擇Add external Archives...
然后我們選擇我們需要的jar包择膝,大家可以到官網(wǎng)進(jìn)行下載誓琼。
準(zhǔn)備工作完成之后,我們就可以開始基礎(chǔ)的操作了肴捉。我們首先創(chuàng)建一個(gè)數(shù)據(jù)庫:
1腹侣、create database if not exists jdbc;
2、use jdbc;
3齿穗、
create table if not exists users(
id int(5),
name varchar(10),
sal double(8,2),
hire timestamp
);
接下來我們插入數(shù)據(jù):
我們顯示一下我們創(chuàng)建的數(shù)據(jù)庫:
select id, name, sal from users;
接著我們到Eclipse中寫Java類:
package test;
/**
* SUN公司JDBC規(guī)則
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Timestamp;
/**
* JDBC入門傲隶,查詢users表中的所有記錄,并在控制臺(tái)顯示
*/
public class MysqlJdbc {
public static void main(String[] args) throws Exception{
//連接MySQL數(shù)據(jù)庫服務(wù)器的字符串
//jdbc:主協(xié)議窃页,即如果你用jdbc規(guī)則來連接數(shù)據(jù)庫的話跺株,主協(xié)議必定是jdbc
//mysql:子協(xié)議,即連接的是哪種數(shù)據(jù)庫服務(wù)器脖卖,如果是mysql數(shù)據(jù)庫服務(wù)器的話乒省,必定是mysql
//127.0.0.1:數(shù)據(jù)庫服務(wù)器是位于哪臺(tái)PC的上,可以用ip表示畦木,也可以用域名表示袖扛,例如:localhost
//3306:表示MySQL數(shù)據(jù)庫服務(wù)器安裝以PC上的端口號(hào)
//jdbc:表示需要訪問MySQL數(shù)據(jù)庫服務(wù)器上的哪個(gè)具體的數(shù)據(jù)庫
//如果你訪問的MySQL數(shù)據(jù)庫服務(wù)器的本機(jī)上的話,且端口號(hào)是3306的話十籍,可以簡寫成:jdbc:mysql:///jdbc
String url = "jdbc:mysql://127.0.0.1:3306/jdbc";
//進(jìn)入MySQL數(shù)據(jù)庫服務(wù)器的用戶名
String user = "luj1n";
//進(jìn)入MySQL數(shù)據(jù)庫服務(wù)器的密碼蛆封,項(xiàng)目中密碼不可以明文,必須加密
String password = "585460";
//需要執(zhí)行的SQL語句妓雾,建議用大寫字母
String sql = "SELECT ID,NAME,SAL,HIRE FROM USERS";
//NO1)表面:在classpath中查詢com.mysql.jdbc.Driver這個(gè)字符串對(duì)象的類娶吞,加載到JVM中
//NO1)深層:向DriverManager注冊(cè)數(shù)據(jù)庫驅(qū)動(dòng)
Class.forName("com.mysql.jdbc.Driver");
//NO2)獲取與MySQL數(shù)據(jù)庫服務(wù)器的連接
Connection conn = DriverManager.getConnection(url,user,password);
//NO3)創(chuàng)建封裝SQL語句的對(duì)象
Statement stmt = conn.createStatement();
//NO4)執(zhí)行SQL語句垒迂,這里我們使用查詢械姻,將結(jié)果封裝到結(jié)果集
ResultSet rs = stmt.executeQuery(sql);
//NO5)處理結(jié)果集,在默認(rèn)情況下,指針位于結(jié)果集第一行記錄之前/上
//rs.next()如果指向有記錄的話楷拳,返回true;否則返回false
while(rs.next()){
//以行為單位绣夺,獲取每個(gè)字段的值
int id = rs.getInt("id");
String name = rs.getString("name");
double sal = rs.getDouble("sal");
Timestamp hire = rs.getTimestamp("hire");
//顯示在控制吧
System.out.println(id+"\t"+name+"\t"+sal+"\t"+hire);
}
//NO6)關(guān)閉所用過的連接對(duì)象
rs.close();
stmt.close();
conn.close();
//rs和stat叫輕量級(jí)對(duì)象,即創(chuàng)建和銷毀不耗時(shí)
//conn叫重量級(jí)對(duì)象欢揖,即創(chuàng)建和銷毀要耗時(shí)
}
}
我們把項(xiàng)目給運(yùn)行起來:
package test;
/**
* SUN公司JDBC規(guī)則
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Timestamp;
/**
* JDBC入門陶耍,查詢users表中的所有記錄,并在控制臺(tái)顯示
*/
public class MysqlJdbc {
public static void main(String[] args) throws Exception{
//連接MySQL數(shù)據(jù)庫服務(wù)器的字符串
//jdbc:主協(xié)議她混,即如果你用jdbc規(guī)則來連接數(shù)據(jù)庫的話烈钞,主協(xié)議必定是jdbc
//mysql:子協(xié)議,即連接的是哪種數(shù)據(jù)庫服務(wù)器坤按,如果是mysql數(shù)據(jù)庫服務(wù)器的話毯欣,必定是mysql
//127.0.0.1:數(shù)據(jù)庫服務(wù)器是位于哪臺(tái)PC的上,可以用ip表示臭脓,也可以用域名表示酗钞,例如:localhost
//3306:表示MySQL數(shù)據(jù)庫服務(wù)器安裝以PC上的端口號(hào)
//jdbc:表示需要訪問MySQL數(shù)據(jù)庫服務(wù)器上的哪個(gè)具體的數(shù)據(jù)庫
//如果你訪問的MySQL數(shù)據(jù)庫服務(wù)器的本機(jī)上的話,且端口號(hào)是3306的話来累,可以簡寫成:jdbc:mysql:///jdbc
String url = "jdbc:mysql://127.0.0.1:3306/jdbc";
//進(jìn)入MySQL數(shù)據(jù)庫服務(wù)器的用戶名
String user = "luj1n";
//進(jìn)入MySQL數(shù)據(jù)庫服務(wù)器的密碼砚作,項(xiàng)目中密碼不可以明文,必須加密
String password = "585460";
//需要執(zhí)行的SQL語句嘹锁,建議用大寫字母
String sql = "SELECT ID,NAME,SAL,HIRE FROM USERS";
//NO1)表面:在classpath中查詢com.mysql.jdbc.Driver這個(gè)字符串對(duì)象的類葫录,加載到JVM中
//NO1)深層:向DriverManager注冊(cè)數(shù)據(jù)庫驅(qū)動(dòng)
Class.forName("com.mysql.jdbc.Driver");
//NO2)獲取與MySQL數(shù)據(jù)庫服務(wù)器的連接
Connection conn = DriverManager.getConnection(url,user,password);
//NO3)創(chuàng)建封裝SQL語句的對(duì)象
Statement stmt = conn.createStatement();
//NO4)執(zhí)行SQL語句,這里我們使用查詢领猾,將結(jié)果封裝到結(jié)果集
ResultSet rs = stmt.executeQuery(sql);
//NO5)處理結(jié)果集压昼,在默認(rèn)情況下,指針位于結(jié)果集第一行記錄之前/上
//rs.next()如果指向有記錄的話瘤运,返回true;否則返回false
while(rs.next()){
//以行為單位窍霞,獲取每個(gè)字段的值
int id = rs.getInt("id");
String name = rs.getString("name");
double sal = rs.getDouble("sal");
Timestamp hire = rs.getTimestamp("hire");
//顯示在控制吧
System.out.println(id+"\t"+name+"\t"+sal+"\t"+hire);
}
//NO6)關(guān)閉所用過的連接對(duì)象
rs.close();
stmt.close();
conn.close();
//rs和stat叫輕量級(jí)對(duì)象,即創(chuàng)建和銷毀不耗時(shí)
//conn叫重量級(jí)對(duì)象拯坟,即創(chuàng)建和銷毀要耗時(shí)
}
}
我們把項(xiàng)目給運(yùn)行起來:
這就是最簡單的JDBC的使用方法但金。