首先需要導入相應資料庫的驅動文件,然後要注冊驅動,Class.forname(driverName),獲取Connection對象Connection conn=DriverManager.getConnection(URL);然後獲取PreparedStatement對象PreparedStatement pst=conn.getPreparedState(sql,username,password)其中的username和password是你訪問資料庫的名稱和密碼;如果要使用到返回集合則可以用ResultSet對象接收,ResultSet rs=pst.executeQuery();不要使用到返回集合的話就直接pst.executeQuery();
以上的可以查jdk
1.mysql:driverName的值為:com.mysql.jdbc.Driver;url的值為:jdbc:mysql://localhost:3306/hibernate其中hibernate是你的資料庫名稱
2.sqlserver:driverName的值為:com.microsoft.sqlserver.jdbc.SQLServerDriver;url的值為
jdbc:sqlserver://localhost:1433;DatabaseName=" + database,其中database是你資料庫名稱
3.oracle:driverName的值為:oracle.jdbc.driver.OracleDriver;url的值:jdbc:oracle:thin:@127.0.0.1:1521:ora92,其中ora92是你資料庫名稱
2. jdbc訪問資料庫有哪幾種方法
連接資料庫有很多種 JDBC就是一種方法啊 不過JDBC注冊驅動有三種方法//注冊驅動 方法一riverManager.registerDriver(new com.mysql.jdbc.Driver());//注冊驅動 方法二System.setProperty("jdbc.Driver","com.mysql.jdbc.Driver");//注冊驅動 方法三 通過一個類的名字把類裝載到java的虛擬機中Class.forName("com.mysql.jdbc.Driver");
3. JDBC訪問資料庫的步驟
載入(注冊)資料庫驅動(到JVM)。建立(獲取)資料庫連接。創建(獲取)資料庫操作對象。定義操作的SQL語句。執行資料庫操作。獲取並操作結果集。
在資料庫的發展歷史上,資料庫先後經歷了層次資料庫、網狀資料庫和關系資料庫等各個階段的發展,資料庫技術在各個方面的快速的發展。特別是關系型資料庫已經成為目前資料庫產品中最重要的一員。
80年代以來, 幾乎所有的資料庫廠商新出的資料庫產品都支持關系型資料庫,即使一些非關系資料庫產品也幾乎都有支持關系資料庫的介面。這主要是傳統的關系型資料庫可以比較好的解決管理和存儲關系型數據的問題。
資料庫管理系統是為管理資料庫而設計的電腦軟體系統,一般具有存儲、截取、安全保障、備份等基礎功能。資料庫管理系統可以依據它所支持的資料庫模型來作分類,例如關系式、XML;或依據所支持的計算機類型來作分類,例如伺服器群集、行動電話。
或依據所用查詢語言來作分類,例如SQL、XQuery;或依據性能沖量重點來作分類,例如最大規模、最高運行速度;亦或其他的分類方式。不論使用哪種分類方式,一些DBMS能夠跨類別,例如,同時支持多種查詢語言。
4. java中連接資料庫的方式,有JDBC還有什麼
這是老師發給我們的資料,共享給你:x0dx0aType 1: jdbc-odbc橋 x0dx0aJdbc-odbc 橋 是sun公司提供的,是jdk提供的的標准api. 這種類型的驅動實際是把所有 jdbc的調用傳遞給odbc ,再由odbc調用本地資料庫驅動代碼.( 本地資料庫驅動代碼是指 由資料庫廠商提供的資料庫操作二進制代碼庫,例如在oracle for windows中就是oci dll 文 件) x0dx0ax0dx0ajdbc-odbc橋|odbc|廠商DB代碼---資料庫Serverx0dx0ax0dx0a只要本地機裝有相關的odbc驅動那麼採用jdbc-odbc橋幾乎可以訪問所有的資料庫,jdbc- odbc方法對於客戶端已經具備odbc driver的應用還是可行的.x0dx0ax0dx0a但是,由於jdbc-odbc先調用 odbc再由odbc去調用本地資料庫介面訪問資料庫.所以,執行效率比較低,對於那些大數據量 存取的應用是不適合的.而且,這種方法要求客戶端必須安裝odbc 驅動,所以對於基於 internet ,intranet的應用也是不合適的.因為,你不可能要求所有客戶都能找到odbc driver. x0dx0ax0dx0a=====一般ACCESS用到的比較多,初學者用。實際項目是不用的。x0dx0ax0dx0aType 2: 本地Api驅動 x0dx0ax0dx0a本地api驅動直接把jdbc調用轉變為資料庫的標准調用再去訪問資料庫.x0dx0ax0dx0a這種方法需要本地 資料庫驅動代碼. 本地api驅動|廠商DB代碼---資料庫Server這種驅動比起jdbc-odbc橋執行效率大大提高了.但是,它仍然需要在客戶端載入資料庫廠商 提供的代碼庫.這樣就不適合基於internet的應用.並且,他的執行效率比起3,4型的jdbc驅動 還是不夠高. x0dx0ax0dx0aType3:網路協議驅動 這種驅動實際上是根據我們熟悉的三層結構建立的. jdbc先把對數局庫的訪問請求傳遞給網 絡上的中間件伺服器. 中間件伺服器再把請求翻譯為符合資料庫規范的調用,再把這種調用 傳給資料庫伺服器.如果中間件伺服器也是用java開法的,那麼在在中間層也可以使用1,2型 jdbc驅動程序作為訪問資料庫的方法. 網路協議驅動--中間件伺服器---資料庫Server x0dx0ax0dx0a由於這種驅動是基於server的.所以,它不需要在客戶端載入資料庫廠商提供的代碼庫.而且 他在執行效率和可升級性方面是比較好的.因為大部分功能實現都在server端,所以這種驅動 可以設計的很小,可以非常快速的載入到內存中. 但是,這種驅動在中間件層仍然需要有配置 其它資料庫驅動程序,並且由於多了一個中間層傳遞數據,它的執行效率還不是最好. x0dx0ax0dx0aType4 純JAVA驅動 x0dx0a這種驅動直接把jdbc調用轉換為符合相關資料庫系統規范的請求.由於4型驅動寫的應用可 以直接和資料庫伺服器通訊.這種類型的驅動完全由java實現,因此實現了平台獨立性. 本地協議驅動---------資料庫Server x0dx0ax0dx0a由於這種驅動不需要先把jdbc的調用傳給odbc或本地資料庫介面或者是中間層伺服器.所 以它的執行效率是非常高的.而且,它根本不需要在客戶端或伺服器端裝載任何的軟體或驅動. 這種驅動程序可以動態的被下載.但是對於不同的資料庫需要下載不同的驅動程序. x0dx0ax0dx0a以上對四種類型的jdbc驅動做了一個說明.那麼它們適合那種類型的應用開發呢? x0dx0ax0dx0aJdbc-odbc橋由於它的執行效率不高,更適合做為開發應用時的一種過度方案,或著對於初學 者了解jdbc編程也較適用. 對於那些需要大數據量操作的應用程序則應該考慮2,3,4型驅動.在intranet方面的應用可以 考慮2型驅動,但是由於3,4型驅動在執行效率上比2型驅動有著明顯的優勢,而且目前開發 的趨勢是使用純java.所以3,4型驅動也可以作為考慮對象. 至於基於internet方面的應用就只有考慮3,4型驅動了. 因為3型驅動可以把多種資料庫驅 動都配置在中間層伺服器.所以3型驅動最適合那種需要同時連接多個不同種類的資料庫, 並且對並發連接要求高的應用. 4型驅動則適合那些連接單一資料庫的工作組應用。x0dx0ax0dx0a現在是純java 開發,所以一般都用type4的jdbc driver。
5. JDBC訪問資料庫的步驟
1、載入對應資料庫驅動,一般用反射Class.forName(String
driverName);
2、創建連接通過DriverManager.getConnection(url,userName,passwd);
3、獲取statement對象,通過statement對象執行sql語句;
4、如果是查詢則返回結果集,貯存於ResultSet;
5、如果關閉事物自動提交要提交事物;
6、最後,關閉所有連接,自里往外關閉。
6. JDBC是什麼
JDBC庫包含的API為每個通常與資料庫的使用相關聯的任務:
使得連接到資料庫
創建SQL或MySQL語句
執行SQL或MySQL的查詢資料庫
查看和修改結果記錄從根本上說,JDBC是一種規范,它提供的介面,一套完整的,允許攜帶型訪問底層資料庫。可以用Java來寫不同類型的可執行文件,如:
Java應用程序
JavaApplets
JavaServlets
JavaServerPages(JSP)
EnterpriseJavaBeans(EJBs)所有這些不同的可執行文件就可以使用JDBC驅動程序來訪問資料庫,並把存儲的數據的優勢。
JDBC提供了相同的功能,ODBC,允許Java程序包含與資料庫無關的代碼。
先決條件:
以前正如期進行本教程,需要具備以下兩個主題內容很好的了解:
核心Java編程
SQL或MySQL資料庫
JDBC架構:
JDBCAPI支持兩層和三層處理模型進行資料庫訪問,但在一般的JDBC體系結構由兩層組成:
JDBCAPI:提供了應用程序對JDBC的管理連接。
JDBCDriverAPI:支持JDBC管理到驅動器連接。JDBCAPI的使用驅動程序管理器和資料庫特定的驅動程序提供透明的連接到異構資料庫。
JDBC驅動程序管理器可確保正確的驅動程序來訪問每個數據源。該驅動程序管理器能夠支持連接到多個異構資料庫的多個並發的驅動程序。
以下是結構圖,它顯示了驅動程序管理器方面的JDBC驅動程序和Java應用程序的位置:
常見的JDBC組件:
JDBCAPI提供了以下介面和類:
DriverManager:這個類管理資料庫驅動程序的列表。內容是否符合從Java應用程序使用的通信子協議正確的資料庫驅動程序的連接請求。識別JDBC在一定子協議的第一個驅動器將被用來建立資料庫連接。
Driver:此介面處理與資料庫伺服器通信。很少直接與驅動程序對象。相反,使用DriverManager中的對象,它管理此類型的對象。它也抽象與驅動程序對象工作相關的詳細信息
Connection:此介面與接觸資料庫的所有方法。連接對象表示通信上下文,即,與資料庫中的所有的通信是通過唯一的連接對象。
Statement:可以使用這個介面創建的對象的SQL語句提交到資料庫。一些派生的介面接受除執行存儲過程的參數。
ResultSet:這些對象保存從資料庫後,執行使用Statement對象的SQL查詢中檢索數據。它作為一個迭代器,讓您可以通過移動它的數據。
SQLException:這個類處理發生在一個資料庫應用程序的任何錯誤。
7. 怎樣使用jdbc訪問mysql資料庫
JDBC連接MYSQL資料庫:
package cn.outofmemory.test;
import java.sql.Connection;
import java.sql.DriverManager;
public class Mysql {
public static void main(String arg[]) {
try {
Connection con = null; //定義一個MYSQL鏈接對象
Class.forName("com.mysql.jdbc.Driver").newInstance(); //MYSQL驅動
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root"); //鏈接本地MYSQL
System.out.print("yes");
} catch (Exception e) {
System.out.print("MYSQL ERROR:" + e.getMessage());
}
}
}
Class.forName("com.mysql.jdbc.Driver").newInstance(); 我們鏈接的是MYSQL資料庫,所以需要一個MYSQL的資料庫驅動,如果你的環境中沒有安裝,
可以下載:mysql-connector-java-5.1.17-bin.jar JAR包,然後放進jdk1.6.0_37\jre\lib\ext 重啟eclispe 就可以在JRE系統庫中看到。
con = DriverManager.getConnection;("jdbc:mysql://127.0.0.1:3306/test", "root", "root"); 是鏈接資料庫的語句,
返回Connection con;對象。參數格式:("jdbc:mysql://ip:埠/資料庫名稱", 用戶名,密碼)
寫入一條數據
package main;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Mysql {
/**
* 入口函數
* @param arg
*/
public static void main(String arg[]) {
try {
Connection con = null; //定義一個MYSQL鏈接對象
Class.forName("com.mysql.jdbc.Driver").newInstance(); //MYSQL驅動
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root"); //鏈接本地MYSQL
Statement stmt; //創建聲明
stmt = con.createStatement();
//新增一條數據
stmt.executeUpdate("INSERT INTO user (username, password) VALUES ('init', '123456')");
ResultSet res = stmt.executeQuery("select LAST_INSERT_ID()");
int ret_id;
if (res.next()) {
ret_id = res.getInt(1);
System.out.print(ret_id);
}
} catch (Exception e) {
System.out.print("MYSQL ERROR:" + e.getMessage());
}
}
}
stmt.executeUpdate INSERT; DELETE; UPDATE;語句都用executeUpdate函數來操作
stmt.executeQuery SELECT;語句都用stmt.executeQuery函數來操作
ResultSet res = stmt.executeQuery;("select LAST;_INSERT_ID()");
查詢最後插入數據的ID號,返回ResultSet res;對象
刪除和更新數據
package main;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Mysql {
/**
* 入口函數
* @param arg
*/
public static void main(String arg[]) {
try {
Connection con = null; //定義一個MYSQL鏈接對象
Class.forName("com.mysql.jdbc.Driver").newInstance(); //MYSQL驅動
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root"); //鏈接本地MYSQL
Statement stmt; //創建聲明
stmt = con.createStatement();
//新增一條數據
stmt.executeUpdate("INSERT INTO user (username, password) VALUES ('init', '123456')");
ResultSet res = stmt.executeQuery("select LAST_INSERT_ID()");
int ret_id;
if (res.next()) {
ret_id = res.getInt(1);
System.out.print(ret_id);
}
//刪除一條數據
String sql = "DELETE FROM user WHERE id = 1";
long deleteRes = stmt.executeUpdate(sql); //如果為0則沒有進行刪除操作,如果大於0,則記錄刪除的條數
System.out.print("DELETE:" + deleteRes);
//更新一條數據
String updateSql = "UPDATE user SET username = 'xxxx' WHERE id = 2";
long updateRes = stmt.executeUpdate(updateSql);
System.out.print("UPDATE:" + updateRes);
} catch (Exception e) {
System.out.print("MYSQL ERROR:" + e.getMessage());
}
}
}
刪除和更新數據都使用stmt.executeUpdate函數。
刪除和更新數據都會返回一個Long的結果,如果為0,則刪除或者更新失敗,如果大於0則是操作刪除的記錄數
查詢語句
package main;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
public class Mysql {
/**
* 入口函數
* @param arg
*/
public static void main(String arg[]) {
try {
Connection con = null; //定義一個MYSQL鏈接對象
Class.forName("com.mysql.jdbc.Driver").newInstance(); //MYSQL驅動
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root"); //鏈接本地MYSQL
Statement stmt; //創建聲明
stmt = con.createStatement();
//新增一條數據
stmt.executeUpdate("INSERT INTO user (username, password) VALUES ('init', '123456')");
ResultSet res = stmt.executeQuery("select LAST_INSERT_ID()");
int ret_id;
if (res.next()) {
ret_id = res.getInt(1);
System.out.print(ret_id);
}
//刪除一條數據
String sql = "DELETE FROM user WHERE id = 1";
long deleteRes = stmt.executeUpdate(sql); //如果為0則沒有進行刪除操作,如果大於0,則記錄刪除的條數
System.out.print("DELETE:" + deleteRes);
//更新一條數據
String updateSql = "UPDATE user SET username = 'xxxx' WHERE id = 2";
long updateRes = stmt.executeUpdate(updateSql);
System.out.print("UPDATE:" + updateRes);
//查詢數據並輸出
String selectSql = "SELECT * FROM user";
ResultSet selectRes = stmt.executeQuery(selectSql);
while (selectRes.next()) { //循環輸出結果集
String username = selectRes.getString("username");
String password = selectRes.getString("password");
System.out.print("\r\n\r\n");
System.out.print("username:" + username + "password:" + password);
}
} catch (Exception e) {
System.out.print("MYSQL ERROR:" + e.getMessage());
}
}
}
查詢語句使用stmt.executeQuery函數
rs.absolute() //絕對位置,負數表示從後面數
rs.first()第一條
rs.last()最後一條
rs.previoust()前一條
rs.next()後一條
rs.beforeFirst()第一條之前
rs.afterLast()最後之後
rs.isFirst(),rs.isLast(),rs.isBeforeFirst(),rs.isAfterLast