當前位置:商標查詢大全網 - 培訓招生 - (高分)急求JAVA學生信息管理系統連接數據庫的源代碼。

(高分)急求JAVA學生信息管理系統連接數據庫的源代碼。

數據庫連接(連接)

數據庫連接

獲取數據庫連接有兩種方式,壹種是通過DriverManager類,另壹種是使用DataSource接口。這兩種方法都提供了壹個getConnection方法,用戶可以在程序中處理它們之後調用它來返回數據庫連接。

DriverManager類

數據源接口

連接接口

JDBC網址

JDBC:& lt;子協議& gt:& ltsubname & gt

驅動程序註冊方法

(1)調用Class.forName方法。

(2)設置jdbc.drivers系統屬性。

驅動程序管理器方法

DriverManager類中的所有方法都是靜態方法,因此在使用DriverManager類的方法時,不需要生成實例。

駕駛員管理器

GetConnection方法

函數是獲取數據庫連接,原型如下:

公共靜態連接getConnection(字符串url)

拋出SQLException

公共靜態連接getConnection(字符串url、字符串用戶、字符串密碼)

拋出SQLException

公共靜態連接getConnection(字符串url,屬性信息)

拋出SQLException

使用DriverManager的getConnetion方法。

class . forname(" sun . JDBC . odbc . JDBC odbc driver ");

connection conn = driver manager . get connection

(“jdbc:odbc:sqlserver”、“sa”、“sa”);

使用設置jdbc.drivers系統屬性的方法

Java-djdbc . drivers = sun . JDBC . odbc . jdbcodbc driver test.java

數據源接口

……

//從上下文中找到數據源,獲取數據庫連接。

context CTX = new initial context();

data source ds =(data source)CTX . lookup(" SQL server ");

connection conn = ds . getconnection();

//查詢數據庫中的所有記錄。

statement stmt = conn . create statement();

ResultSet RS = stmt . execute query(" SELECT * FROM student ");

……

連接接口

連接接口代表已經建立的數據庫連接,是整個JDBC的核心內容。根據功能,連接接口中的方法可分為三類:

生成數據庫語句

管理數據庫事務

獲取數據庫信息

生成數據庫語句

JDBC將數據庫語句分為三種類型:

生成語句語句:

Connection.createStatement()

生成PreparedStatement語句:

聯系。prepare語句()

生成可調用語句:

聯系。prepareCall()

管理數據庫事務

默認情況下,JDBC將數據庫語句視為完整的事務。您可以關閉默認的事務管理:

public void set auto commit(Boolean auto commit)拋出SQLException

將autoCommit的值設置為false將關閉自動事務管理模式。

執行事務後,應該提交事務:

public void commit()拋出SQLException

您可以取消交易:

public void rollback()拋出SQLException

第二講第四部分

數據庫語句

數據庫語句

有三種類型的JDBC數據庫語句* * *:

聲明:

Statement語句主要用來嵌入通用的SQL語句,包括查詢、更新、插入和刪除等。

準備報表:

PreparedStatement稱為準備好的語句,它臨時指定SQL語句中的壹些參數,但在執行時是統壹的。

可調用語句:

CallableStatement用於執行數據庫的存儲過程。

語句語句

ExecuteQuery方法

ExecuteUpdate方法

執行方法

關閉方法

ExecuteQuery方法

ExecuteQuery方法主要用於執行產生單個結果集的SQL查詢語句(QL),即SELECT語句。executeQuery方法的原型如下:

公共結果集executeQuery(String sql)引發SQLException

ExecuteUpdate方法

executeUpdate方法主要用於執行INSERT、Update和DELETE語句,即SQL的數據操作語句(DML)。

executeUpdate方法還可以執行類似於CREATE TABLE和DROP TABLE語句的SQL數據定義語言(DDL)語句。

executeUpdate方法的返回值是壹個整數,指示受影響的行數(即更新計數)。對於CREATE TABLE或DROP TABLE等不對特定行進行操作的語句,executeUpdate的返回值始終為零。

執行方法

execute方法用於執行:

返回多個結果集

多次更新計數

或者兩者的組合。

執行方法

返回多個結果集:首先調用getResultSet方法獲取第壹個結果集,然後調用適當的getter方法獲取其中的值。要獲得第二個結果集,需要先調用getMoreResults方法,然後調用getResultSet方法。

返回多個更新計數:首先,調用getUpdateCount方法獲取第壹個更新計數。然後調用getMoreResults,再次調用getUpdateCount以獲取後來的更新計數。

不知道返回什麽:如果結果是ResultSet對象,execute方法返回true;如果結果是int類型,則意味著結果是更新計數或者執行的語句是DDL命令。

執行方法

為了說明如果處理execute方法返回的結果,下面是壹個代碼示例:

stmt.execute(查詢);

while (true) {

int row = stmt . getupdatecount();

//如果是更新計數

if(row & gt;0) {

System.out.println("更新的行數為:"+row ");

stmt . getmoresults();

繼續;

}

執行方法

//如果是DDL命令或0更新

if (row == 0) {

System.out.println("不更新,否則SQL語句就是DDL語句!");

stmt . getmoresults();

繼續;

}

//如果是結果集

ResultSet rs = stmt.getResultSet

如果(rs!= null) {

while (rs.next()) {

//處理結果集

。。。

}

stmt . getmoresults();

繼續;

}

打破;

}

準備好的報表語句

登錄網站或論壇時:

Use語句語句

statement stmt = conn . create statement();

ResultSet rs = stmt.executeQuery

(“從用戶信息中選擇密碼

其中id = userId ");

使用PreparedStatement語句

prepared statement pstmt = conn . prepare statement

(“從用戶信息中選擇密碼

其中id=?");

pstmt.setString(1,userId);

準備好的報表語句

常用的setter方法

public void set boolean(int parameter index,boolean x)拋出SQLException

public void set byte(int parameter index,byte x)拋出SQLException

public void set short(int parameter index,short x)拋出SQLException

public void setInt(int parameter index,int x)拋出SQLException

public void setLong(int parameter index,long x)拋出SQLException

public void set float(int parameter index,float x)拋出SQLException

public void set double(int parameter index,double x)拋出SQLException

public void setBigDecimal(int parameter index,BigDecimal x)拋出SQLException

public void setString(int parameter index,String x)拋出SQLException

public void set bytes(int parameter index,byte[] x)拋出SQLException

public void set Date(int parameter index,Date x)拋出SQLException

public void setTime(int parameter index,Time x)hrows SQLException;

public void setTimestamp(int parameter index,Timestamp x)拋出SQLException

準備好的報表語句

PreparedStatement接口是Statement接口的擴展,它重寫了executeQuery方法、executeUpdate方法和execute方法。

公共結果集executeQuery()拋出SQLException

public int executeUpdate()拋出SQLException

公共布爾execute()拋出SQLException

可調用語句語句

CallableStatement語句由連接接口的prepareCall方法創建,創建時需要傳入字符串參數。這些參數的形式如下:

{調用過程名[(?, ?,...)]}

{?= call procedure_name[(?, ?,...)]}

{呼叫過程名稱}

可調用語句語句

問號是參數占位符,有兩種類型的參數* * *:

寫入參數

輸出參數

IN參數是使用setter方法設置的。

使用registerOutParameter方法設置OUT參數。

可調用語句語句

callable statement cstmt = con . prepare call

(“{調用getTestData(?, ?)}");

cstmt.registerOutParameter

(1,Java . SQL . types . tinyint);

cstmt.registerOutParameter

(2,java.sql.Types.DECIMAL,3);

cs TMT . execute query();

byte x = cstmt . get byte(1);

java.math.BigDecimal n =

cstmt.getBigDecimal(2,3);

第二講第五部分

結果集

結果集

為了方便查詢結果的處理,JDBC專門定義了壹個接口,這就是ResultSet接口。ResultSet接口提供了壹種訪問數據庫查詢結果的方式,這個接口指向的對象通常稱為結果集。

有兩種方法可以獲得結果集。壹種是直接執行查詢語句,並將結果存儲在結果集對象上。另壹種是不存儲返回的結果,而是在需要的時候調用數據庫語句的getResultSet方法返回結果集。

結果集

結果集指針

因為返回的結果集可能包含多個數據記錄,所以ResultSet接口提供了壹種方法來輪詢結果集的所有數據記錄。結果集自動維護壹個指向當前數據記錄的指針,該指針最初指向第壹行的前壹個位置。下壹個方法用於向前移動指針。

結果集

結果集屬性

默認情況下,結果集是不可更新的,結果集的指針只能向前移動。也就是說,用戶在得到壹個結果集後,只能按照從第壹條記錄到最後壹條記錄的順序向後讀取,而不能跳轉到任何壹條記錄,也不能返回到上壹條記錄。而且,這種對結果集的輪詢只能進行壹次,不能將指針重置到初始位置進行多次輪詢。

結果集

結果集屬性

類型

並發

效率

在生成數據庫語句時,通過將相應的參數傳遞到生成方法來設置屬性,但是當結果集已返回時,其屬性不能更改。

從結果集生成語句語句有三種方法。

public語句createStatement()引發SQLException

公開聲明創建聲明

(int resultSetType,int resultSetConcurrency)

拋出SQLException

公開聲明創建聲明

(int resultSetType,int resultSetConcurrency,

int resultSetHoldability)

拋出SQLException

結果集

有六種方法可以生成PreparedStatement * * *。

public prepared statement prepare statement(String SQL)引發SQLException

public prepared statement prepare statement(String SQL,int autoGeneratedKeys)

拋出SQLException

public prepared statement prepare statement(String SQL,int[] columnIndexes)

拋出SQLException

public prepared statement prepare statement(String SQL,int resultSetType,

int resultSetConcurrency)

拋出SQLException

public prepared statement prepare statement(String SQL,int resultSetType,

int resultSetConcurrency,

int resultSetHoldability)

拋出SQLException

public prepared statement prepare statement(字符串sql。String[]列名)

拋出SQLException

結果集

有三種方法可以生成CallableStatement語句* * *。

public callable statement prepare call(字符串sql)

拋出SQLException

公共可調用語句準備調用

(字符串sql,int resultSetType,

int resultSetConcurrency)

拋出SQLException

公共可調用語句準備調用

(字符串sql,int resultSetType,

int resultSetConcurrency,

int resultSetHoldability)

拋出SQLException

結果集

結果集類型

有三種類型的結果集* * *。TYPE_FORWARD_ONLY的結果集只能向前移動指針,type _ scroll _ inductive和TYPE_SCROLL_SENSITIVE的結果集可以隨意移動指針。後兩種類型的區別在於,前者對其他地方的修改不敏感(靜態),後者對其他地方的修改敏感(動態視圖)。

結果集

結果集類型

對於可以隨意移動指針的結果集,可以用來移動指針的方法有:

下壹個和上壹個:

絕對和相對:參數可以是正的,也可以是負的。

AfterLast,beforeFirst,last and first:

結果集

結果集並發

結果集的並發有兩種* * *。CONCUR_READ_ONLY的結果集是只讀的,無法更新。CONCUR_UPDATABLE的結果集可以通過update方法進行更新。

ResultSet接口提供了壹組更新方法來更新結果集中的數據。這些方法與PreparedStatement接口中定義的setter方法相同,也對應於類型。所有的更新方法都是從update開始的。

所有更新方法都有兩個參數。第壹個參數用於指定更新的列,可以是列名或列序列號。第二個參數指示列的值將被更新。

結果集

結果集並發

語句stmt = conn.createStatement

(結果集。TYPE_SCROLL_SENSITIVE,ResultSet。CONCUR _可更新);

ResultSet RS = stmt . execute query(" SELECT * FROM student "+

“其中年級=2,數學& gt60和物理& gt60和"+

“化學& gt60和英語& gt60和中文& gt60");

while(rs.next()){

rs.updateString("grade "," 3 ");

RS . update row();

}

結果集

結果集有效性

結果集的有效性是指調用連接接口的commit方法後,結果集是否自動關閉。所以它只有兩個可選值,即HOLD_CURSORS_OVER_COMMIT和CLOSE_CURSORS_AT_COMMIT。前者意味著調用commit方法後不會關閉結果集;後者意味著關閉結果集。

結果結果集

結果集的Getter方法

ResultSet接口還提供了壹組getter方法來返回當前記錄的屬性值。都是以get開頭,後面是數據類型。例如,如果要返回float類型的列值,應該調用getFloat方法。每種類型的getter方法都有兩種形式,名稱相同但參數不同。兩種形式的getter方法都只有壹個參數。getter方法的第壹種形式的參數是String類型,用於指定列的名稱。getter方法參數的另壹種形式是int類型,用於指定列的序列號。