JDBC連接數(shù)據(jù)庫
成都創(chuàng)新互聯(lián)公司專注于臨渭區(qū)網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供臨渭區(qū)營銷型網(wǎng)站建設,臨渭區(qū)網(wǎng)站制作、臨渭區(qū)網(wǎng)頁設計、臨渭區(qū)網(wǎng)站官網(wǎng)定制、小程序制作服務,打造臨渭區(qū)網(wǎng)絡公司原創(chuàng)品牌,更為您提供臨渭區(qū)網(wǎng)站排名全網(wǎng)營銷落地服務。
?創(chuàng)建一個以JDBC連接數(shù)據(jù)庫的程序,包含7個步驟:
1、加載JDBC驅(qū)動程序:
在連接數(shù)據(jù)庫之前,首先要加載想要連接的數(shù)據(jù)庫的驅(qū)動到JVM(Java虛擬機),
這通過java.lang.Class類的靜態(tài)方法forName(String className)實現(xiàn)。
例如:
try{
//加載MySql的驅(qū)動類
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驅(qū)動程序類 ,加載驅(qū)動失??!");
e.printStackTrace() ;
}
成功加載后,會將Driver類的實例注冊到DriverManager類中。
2、提供JDBC連接的URL
?連接URL定義了連接數(shù)據(jù)庫時的協(xié)議、子協(xié)議、數(shù)據(jù)源標識。
?書寫形式:協(xié)議:子協(xié)議:數(shù)據(jù)源標識
協(xié)議:在JDBC中總是以jdbc開始
子協(xié)議:是橋連接的驅(qū)動程序或是數(shù)據(jù)庫管理系統(tǒng)名稱。
數(shù)據(jù)源標識:標記找到數(shù)據(jù)庫來源的地址與連接端口。
例如:(MySql的連接URL)
jdbc:mysql:
//localhost:3306/test?useUnicode=truecharacterEncoding=gbk ;
useUnicode=true:表示使用Unicode字符集。如果characterEncoding設置為
gb2312或GBK,本參數(shù)必須設置為true 。characterEncoding=gbk:字符編碼方式。
3、創(chuàng)建數(shù)據(jù)庫的連接
?要連接數(shù)據(jù)庫,需要向java.sql.DriverManager請求并獲得Connection對象,
該對象就代表一個數(shù)據(jù)庫的連接。
?使用DriverManager的getConnectin(String url , String username ,
String password )方法傳入指定的欲連接的數(shù)據(jù)庫的路徑、數(shù)據(jù)庫的用戶名和
密碼來獲得。
例如:
//連接MySql數(shù)據(jù)庫,用戶名和密碼都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("數(shù)據(jù)庫連接失?。?);
se.printStackTrace() ;
}
4、創(chuàng)建一個Statement
?要執(zhí)行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3
種類型:
1、執(zhí)行靜態(tài)SQL語句。通常通過Statement實例實現(xiàn)。
2、執(zhí)行動態(tài)SQL語句。通常通過PreparedStatement實例實現(xiàn)。
3、執(zhí)行數(shù)據(jù)庫存儲過程。通常通過CallableStatement實例實現(xiàn)。
具體的實現(xiàn)方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt =
con.prepareCall("{CALL demoSp(? , ?)}") ;
java連接數(shù)據(jù)庫主要用的是jdbc。
在你指定jdbc的時候需要指定連接字符串。
對于數(shù)據(jù)庫的不同連接字符串的格式不同。
但是目前發(fā)現(xiàn)jdbc連接數(shù)據(jù)庫都是指定庫名稱的。比如mysql會指定。oracle會指定。sqlserver也會指定??赡苁菫榱税踩陂g數(shù)據(jù)庫開發(fā)商沒有提供此類不用指定庫名就連接上的方法,主要是為了安全數(shù)據(jù)庫的安全。個人想法。
目前java連接數(shù)據(jù)庫動態(tài)建表是沒有問題的。只要是標準的sql92語法的都能實現(xiàn)與執(zhí)行。 但是好像sql92沒有定義如何建庫的語句吧。
還有你需要先確定表和庫的概念。。 表的合集是庫。。。
Connection conn = 鏈接
Statement stmt = conn.createStatementI();
String sql = "CREATE TABLE PFO_ANALYSE_BRANCH ( "
+" NODE_NAME_S VARCHAR2(50 BYTE), "
+ 其他字段
+")";
stmt.execute(sql)
Java要連接數(shù)據(jù)庫,那么首先你必須安裝mysql數(shù)據(jù)庫。
安裝好mysql之后,安裝JDK了。
安裝好JDK之后,就是安裝Eclipse了,要支持JDK版本,Eclipse安裝的時候會自動去找JDK安裝位置的,解壓版的Eclipse,就要配置eclipse.ini文件了,將對應的JDK配置好,這些已經(jīng)準備就緒的時候,就到mysql中創(chuàng)建數(shù)據(jù)庫和表。
先創(chuàng)建數(shù)據(jù)庫:
CREATE DATABASE SCUTCS;
接著,創(chuàng)建表:
CREATE TABLE STUDENT
(
SNO CHAR(7) NOT NULL,
SNAME VARCHAR(8) NOT NULL,
SEX CHAR(2) NOT NULL,
BDATE DATE NOT NULL,
HEIGHT DEC(5,2) DEFAULT 000.00,
PRIMARY KEY(SNO)
);
然后插入數(shù)據(jù),可以用SQL語句insert into 表名 values (value1, value2, ...);
編寫.java文件來演示一下如何訪問MySQL數(shù)據(jù)庫。
import java.sql.*;
public class JDBCTest {
public static void main(String[] args){
// 驅(qū)動程序名 String driver = "com.mysql.jdbc.Driver";
// URL指向要訪問的數(shù)據(jù)庫名scutcs String url = "jdbc:mysql://127.0.0.1:3306/scutcs";
// MySQL配置時的用戶名 String user = "root"; // MySQL配置時的密碼 String password = "root";
try { // 加載驅(qū)動程序 Class.forName(driver);
// 連續(xù)數(shù)據(jù)庫 Connection conn = DriverManager.getConnection(url, user, password);
if(!conn.isClosed()) System.out.println("Succeeded connecting to the Database!");
// statement用來執(zhí)行SQL語句 Statement statement = conn.createStatement();
// 要執(zhí)行的SQL語句 String sql = "select * from student";
// 結(jié)果集 ResultSet rs = statement.executeQuery(sql);
while(rs.next()) // 選擇sname這列數(shù)據(jù) name = rs.getString("sname
// 輸出結(jié)果 System.out.println(rs.getString("sno") + "\t" + name); }
rs.close(); conn.close();
} catch(ClassNotFoundException e) {
System.out.println("Sorry,can`t find the Driver!"); e.printStackTrace();
} catch(SQLException e) {
e.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
} } }