『壹』 原生jdbc執行sql的過程是什麼呢
標準的API,可以構建更高級的工具和介面,使資料庫開發人員能夠用純Java API編寫資料庫應用程序。同時,JDBC也是一個品牌。使用JDBC,可以很容易地向各種關系數據發送SQL語句。換句話說,有了JDBC API,就不需要再編寫一個訪問Sybase資料庫的程序,另一個訪問Oracle資料庫的程序,或者另一個訪問Informix資料庫的程序等等。
該連接地址將由資料庫製造商提供。通常,當使用JDBC連接到資料庫時,用戶需要輸入資料庫連接的用戶名和密碼。本章使用的是mysql資料庫,因此用戶名和密碼都是“root”,用戶只有在獲得連接後才能查詢或更新資料庫。要連接到資料庫,您需要從java.sql.DriverManager請求並獲取一個Connection對象,該對象表示資料庫的連接。
『貳』 JDBC使用步驟過程
JDBC操作資料庫的基本步驟:
1、載入JDBC驅動程序。
在連接資料庫之前,首先要載入想要連接的資料庫的驅動到JVM(Java虛擬機), 這通過java.lang.Class類的靜態方法forName(String className)實現。成功載入後,會將Driver類的實例注冊到DriverManager類中。
2、提供JDBC連接的URL。
連接URL定義了連接資料庫時的協議、子協議、數據源標識。
書寫形式:協議:子協議:數據源標識。
3、創建資料庫的連接。
要連接資料庫,需要向java.sql.DriverManager請求並獲得Connection對象, 該對象就代表一個資料庫的連接。
使用DriverManager的getConnectin(String url , String username , String password )方法傳入指定的欲連接的資料庫的路徑、資料庫的用戶名和 密碼來獲得。
4、創建一個Statement,要執行SQL語句,必須獲得java.sql.Statement實例。
Statement實例分為以下3 種類型:
(1)執行靜態SQL語句。通常通過Statement實例實現。
(2)執行動態SQL語句。通常通過PreparedStatement實例實現。
(3)執行資料庫存儲過程。通常通過CallableStatement實例實現。
5、執行SQL語句。
Statement介面提供了三種執行SQL語句的方法:executeQuery 、executeUpdate 和execute
6、處理兩種情況的結果。
(1)執行更新返回的是本次操作影響到的記錄數。
(2)執行查詢返回的結果是一個ResultSet對象。
ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些 行中數據的訪問。
使用結果集(ResultSet)對象的訪問方法獲取數據。
7、關閉JDBC對象(關閉結果集-->關閉資料庫操作對象-->關閉連接)。
操作完成以後要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲 明順序相反:
(1)關閉記錄集。
(2)關閉聲明。
(3)關閉連接對象。
(2)jdbc用什麼方法執行sql擴展閱讀:
一、JDBC(Java DataBase Connectivity,java資料庫連接)
是一種用於執行SQL語句的Java API,可以為多種關系資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成。JDBC提供了一種基準,據此可以構建更高級的工具和介面,使資料庫開發人員能夠編寫資料庫應用程序,同時,JDBC也是個商標名。
二、特性
Java 具有堅固、安全、易於使用、易於理解和可從網路上自動下載等特性,是編寫資料庫應用程序的傑出語言。所需要的只是 Java應用程序與各種不同資料庫之間進行對話的方法。而 JDBC 正是作為此種用途的機制。
三、用途
簡單地說,JDBC 可做三件事:與資料庫建立連接、發送 操作資料庫的語句並處理結果。
『叄』 jdbc實現sql語句
用這個類吧.好的話,給我加加分.
import java.sql.*;
/**
* @功能: 一個JDBC的本地化API連接類,封裝了數據操作方法,只用傳一個SQL語句即可
* @作者: 李開歡
* @日期: 2007/
*/
public class ConnectionDemo {
/*
* 這里可以將常量全部放入另一個類中,以方便修改
*/
private static Connection conn;
private static Statement ps;
private static ResultSet rs;
private static final String DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
private static final String URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
private static final String USER ="sa";
private static final String PASS = "sa";
public ConnectionDemo() {
// TODO Auto-generated constructor stub
ConnectionDemo.getConnection();
}
public static Connection getConnection(){
System.out.println("連接中...");
try {
Class.forName(ConnectionDemo.DRIVER);
conn = DriverManager.getConnection(ConnectionDemo.URL, ConnectionDemo.USER, ConnectionDemo.PASS);
System.out.println("成功連接");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static Statement getStatement(String sql){
System.out.println("執行SQL語句中...");
try {
ps = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
if(sql.substring(0, 6).equals("select")){
rs = ps.executeQuery(sql);
System.out.println("執行完查詢操作,結果已返回ResultSet集合");
}else if(sql.substring(0, 6).equals("delete")){
ps.executeUpdate(sql);
System.out.println("已執行完畢刪除操作");
}else if(sql.substring(0, 6).equals("insert")){
ps.executeUpdate(sql);
System.out.println("已執行完畢增加操作");
}else{
ps.executeUpdate(sql);
System.out.println("已執行完畢更新操作");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ps;
}
public static ResultSet getResultSet(){
System.out.println("查詢結果為:");
return rs;
}
public static void closeConnection(){
System.out.println("關閉連接中...");
try {
if (rs != null) {
rs.close();
System.out.println("已關閉ResultSet");
}
if (ps != null) {
ps.close();
System.out.println("已關閉Statement");
}
if (conn != null) {
conn.close();
System.out.println("已關閉Connection");
}
} catch (Exception e) {
// TODO: handle exception
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ConnectionDemo.getConnection();
String sql = "delete from type where id = 1";
ConnectionDemo.getStatement(sql);
String sql2 = "insert into type values(1,'教學設備')";
ConnectionDemo.getStatement(sql2);
String sql1 = "select * from type";
ConnectionDemo.getStatement(sql1);
ResultSet rs = ConnectionDemo.getResultSet();
System.out.println("編號 "+"類 型");
try {
while(rs.next()){
System.out.print(" "+rs.getInt(1)+" ");
System.out.println(rs.getString(2));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ConnectionDemo.closeConnection();
}
}
『肆』 在JAVA中,使用JDBC訪問資料庫時可以執行SQL語句完成對資料庫造作的是
B Statement
1、創建 Statement 對象
建立了到特定資料庫的連接之後,就可用該連接發送 SQL 語句。Statement 對象用 Connection 的方法 createStatement 創建,如下列代碼段中所示:
Connection con = DriverManager.getConnection(url, "sunny", "");
Statement stmt = con.createStatement();
為了執行 Statement 對象,被發送到資料庫的 SQL 語句將被作為參數提供給 Statement 的方法:
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2");
2、使用 Statement 對象執行語句
Statement 介面提供了三種執行 SQL 語句的方法:executeQuery、executeUpdate 和 execute。使用哪一個方法由 SQL 語句所產生的內容決定。
方法 executeQuery 用於產生單個結果集的語句,例如 SELECT 語句。
方法 executeUpdate 用於執行 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(數據定義語言)語句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 語句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一個整數,指示受影響的行數(即更新計數)。對於 CREATE TABLE 或 DROP TABLE 等不操作行的語句,executeUpdate 的返回值總為零。
方法 execute 用於執行返回多個結果集、多個更新計數或二者組合的語句。因為多數程序員不會需要該高級功能,所以本概述後面將在單獨一節中對其進行介紹。
執行語句的所有方法都將關閉所調用的 Statement 對象的當前打開結果集(如果存在)。這意味著在重新執行 Statement 對象之前,需要完成對當前 ResultSet 對象的處理。
應注意,繼承了 Statement 介面中所有方法的 PreparedStatement 介面都有自己的 executeQuery、executeUpdate 和 execute 方法。Statement 對象本身不包含 SQL 語句,因而必須給 Statement.execute 方法提供 SQL 語句作為參數。PreparedStatement 對象並不將 SQL 語句作為參數提供給這些方法,因為它們已經包含預編譯 SQL 語句。CallableStatement 對象繼承這些方法的 PreparedStatement 形式。對於這些方法的 PreparedStatement 或 CallableStatement 版本,使用查詢參數將拋出 SQLException。
3、語句完成
當連接處於自動提交模式時,其中所執行的語句在完成時將自動提交或還原。語句在已執行且所有結果返回時,即認為已完成。對於返回一個結果集的 executeQuery 方法,在檢索完 ResultSet 對象的所有行時該語句完成。對於方法 executeUpdate,當它執行時語句即完成。但在少數調用方法 execute 的情況中,在檢索所有結果集或它生成的更新計數之後語句才完成。
概述
Statement 對象用於將 SQL 語句發送到資料庫中。實際上有三種 Statement 對象,它們都作為在給定連接上執行 SQL 語句的包容器:Statement、PreparedStatement(它從 Statement 繼承而來)和 CallableStatement(它從 PreparedStatement 繼承而來)。它們都專用於發送特定類型的 SQL 語句: Statement 對象用於執行不帶參數的簡單 SQL 語句;PreparedStatement 對象用於執行帶或不帶 IN 參數的預編譯 SQL 語句;CallableStatement 對象用於執行對資料庫已存儲過程的調用。
Statement 介面提供了執行語句和獲取結果的基本方法。PreparedStatement 介面添加了處理 IN 參數的方法;而 CallableStatement 添加了處理 OUT 參數的方法。
有些 DBMS 將已存儲過程中的每條語句視為獨立的語句;而另外一些則將整個過程視為一個復合語句。在啟用自動提交時,這種差別就變得非常重要,因為它影響什麼時候調用 commit 方法。在前一種情況中,每條語句單獨提交;在後一種情況中,所有語句同時提交。
4、關閉 Statement 對象
Statement 對象將由 Java 垃圾收集程序自動關閉。而作為一種好的編程風格,應在不需要 Statement 對象時顯式地關閉它們。這將立即釋放 DBMS 資源,有助於避免潛在的內存問題。
『伍』 在jdbc進行資料庫調用時 採用哪些方式執行sql語句呢
創建Statement對象 使用Statement對象執行語句 語句完成 關閉Statement對象 使用方法execute基於JDBC的資料庫通用訪問方法
『陸』 orcale 怎麼通過jdbc執行sql文件
首先你要知道jdbc就是是一種用於執行SQL語句的Java API。我寫點簡單的步驟你參考下~
訪問資料庫的步驟:
1.載入JDBC驅動的實例,
Class.forName()"oracle.jdbc.driver.OracleDriver";
2.指定資料庫
通過連接字元串url指定資料庫.
oracle格式: jdbc:oracle:thin:@host:port:sid
String url = jdbc:oracle:thin:@192.168.0.26:1521:tarena
mysql的格式: jdbc:mysql://host:port/databaseName
String url = jdbc:mysql://localhost:3306/openlab
3.打開資料庫連接
Connection conn = DriverManager.getConnection(url, dbUser, dbPwd);
三個輸入參數: 連接字元串,資料庫用戶名,資料庫密碼
如果連接成功,返回連接對象conn.
Connection對象表示一個與特定資料庫的會話過程.
4.創建Stetement
Statememt stmt = conn.createStatement();
5.提交sql,並返回結果
//查詢語句的執行,使用stmt.executeQuery(sql)方法.
String sql = "select id, name from employees";
ResuleSet rs = stmt.executeQuery(sql);
//DML(insert/update/delete)語句,
String sql = "update employees set salary = 2000"
+ " where salary < 2000";
int result = stmt.executeUpdate(sql);
6.處理結果
1) 查詢返回的結果集放在ResultSet對象中.
2) ResultSet是一個二維表結構.
3) ResultSet的最初位置:第一行之前(Before First)
4) 可以使用ResutltSet的next()方法使指針下移一行,
並返回下移後的這一行是否有數據,有返回true,沒有返回false
5) rs.getXxx(columnIndex);//Int, String, Double...
rs.getInt(1); 或寫成 rs.getInt("id");
rs.getString(2); 或寫成 rs.getString("name");
7.關閉資源
rs.close();
stmt.close();
conn.close();
希望能幫到你~
『柒』 求救!!怎樣在java的jdbc中連續的執行多條SQL語句急急....
Statement有一個子類,PreparedStatement,專門用來執行多條結構相同的sql語句。
例子:
已得到一個連接引用connection
表hh 有 name varchar2的,id number(4) 型的。
String sql=「insert into hh values(?,?)
PreparedStatement pre=connection.prepareStatement(sql);
pre.setString(1,變數);
pre.setInt(2,變數); -----------〉在其他地方給變數傳值,用命令行、或是寫在一個方法內,用參數傳值。
第一個問號用1,第二用2…………
還可以不用數字,用「name」、「id」
pre.executeUpdate(); (--pre.executeQuery()--也是這樣)
API中java.sql包里都有,自己多看看。
『捌』 JDBC執行SQL語句使用哪些類
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
String JDBC_DRIVER = "驅動地址";
String DB_URL = "資料庫url,即IP埠";
String USER = "資料庫賬號";
String PWD = "資料庫密碼";
try {
//注冊載入jdbc驅動
Class.forName(JDBC_DRIVER);
//打開連接
conn = DriverManager.getConnection(DB_URL,USER,PWD);
//創建執行對象
stmt = conn.createStatement();
String testUrl = "select * from project_table";
//執行sql語句
ResultSet rs = stmt.executeQuery(testUrl);
//ResultSetMetaData rsmd = rs.getMetaData();
//展開結果集
while (rs.next()) {
System.out.println(rs.getString(1));
}
rs.close();
stmt.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}