新聞中心
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的不斷擴(kuò)展,越來(lái)越多的數(shù)據(jù)需要整合和管理。對(duì)于學(xué)生管理系統(tǒng)而言,基于數(shù)據(jù)庫(kù)的管理方式已經(jīng)成為了當(dāng)前最為常見和有效的方法之一。在Java編程語(yǔ)言的基礎(chǔ)上,應(yīng)用數(shù)據(jù)庫(kù)技術(shù)進(jìn)行學(xué)生管理系統(tǒng)的開發(fā),不僅具有管理便捷、效率高、安全可靠等優(yōu)勢(shì),同時(shí)也是一種技術(shù)逐步發(fā)展和完善的表現(xiàn)。

成都創(chuàng)新互聯(lián)公司成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元佳木斯做網(wǎng)站,已為上家服務(wù),為佳木斯各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
一、Java學(xué)生管理系統(tǒng)的基本構(gòu)成
Java學(xué)生管理系統(tǒng)的基本構(gòu)成框架主要包括:基礎(chǔ)框架設(shè)計(jì)、用戶登錄注冊(cè)、學(xué)生信息錄入、管理查詢與增刪改查等。
在基礎(chǔ)框架設(shè)計(jì)中,根據(jù)學(xué)生管理系統(tǒng)實(shí)現(xiàn)的要求和業(yè)務(wù)流程,進(jìn)行系統(tǒng)整體架構(gòu)和關(guān)鍵細(xì)節(jié)的設(shè)計(jì)。這里需要考慮到用戶界面的友好性和操作的便捷性,同時(shí)也需要注意到系統(tǒng)的穩(wěn)定性和安全性。一般而言,這一環(huán)節(jié)可以通過(guò)前期需求分析、系統(tǒng)架構(gòu)設(shè)計(jì)以及用戶訪談等方式來(lái)確立。
在用戶登錄注冊(cè)中,主要是對(duì)用戶身份的驗(yàn)證和管理。使用Java提供的身份驗(yàn)證機(jī)制、Cookie技術(shù)或者Token驗(yàn)證等方式,實(shí)現(xiàn)用戶信息的查找、注冊(cè)與登錄,并統(tǒng)一能夠接入第三方登錄API接口,方便用戶快速登錄管理系統(tǒng)。
在學(xué)生信息錄入環(huán)節(jié)中,可以通過(guò)Java開發(fā)框架中提供的ORM技術(shù)(如Hibernate,MyBatis等),連接數(shù)據(jù)庫(kù)并實(shí)現(xiàn)對(duì)學(xué)生信息的錄入和維護(hù),包括學(xué)生基本信息、成績(jī)信息、考勤信息、課程安排和選修情況等。
在管理查詢與增刪改查環(huán)節(jié)中,管理員可以通過(guò)學(xué)生管理系統(tǒng)的管理界面對(duì)學(xué)生信息進(jìn)行查找、修改、刪除和添加等操作,將學(xué)生個(gè)人信息唯一化地存儲(chǔ)、進(jìn)行數(shù)據(jù)分析和處理。
以上環(huán)節(jié)只是Java學(xué)生管理系統(tǒng)的基本框架,而其中協(xié)同作用最重要的方法之一,就是基于數(shù)據(jù)庫(kù)的數(shù)據(jù)管理。
二、Java學(xué)生管理系統(tǒng)中的數(shù)據(jù)管理
在Java學(xué)生管理系統(tǒng)的基本框架之上,數(shù)據(jù)庫(kù)作為系統(tǒng)的數(shù)據(jù)存儲(chǔ)和管理平臺(tái),是其最為重要的技術(shù)之一。使用Java作為系統(tǒng)編程語(yǔ)言,常用的數(shù)據(jù)庫(kù)管理方式包括MySQL、Oracle、SQL Server、PostgreSQL等。這里,以MySQL數(shù)據(jù)庫(kù)管理平臺(tái)為例,闡述Java學(xué)生管理系統(tǒng)的數(shù)據(jù)庫(kù)管理技術(shù)。
1. 數(shù)據(jù)庫(kù)建庫(kù)和設(shè)計(jì)
在MySQL數(shù)據(jù)庫(kù)管理平臺(tái)中,首先需要將基礎(chǔ)框架設(shè)計(jì)中的概念和要求轉(zhuǎn)換為具體的數(shù)據(jù)庫(kù)架構(gòu)和數(shù)據(jù)庫(kù)設(shè)計(jì)。在建庫(kù)和設(shè)計(jì)過(guò)程中,需要考慮到數(shù)據(jù)庫(kù)表之間的邏輯關(guān)系、數(shù)據(jù)的讀取和修改效率,以及數(shù)據(jù)安全和防護(hù)需求等。一般而言,可以采用ER圖或者UML建模工具對(duì)數(shù)據(jù)庫(kù)架構(gòu)進(jìn)行設(shè)計(jì),完成后進(jìn)行數(shù)據(jù)庫(kù)正式建庫(kù)。
2. 數(shù)據(jù)庫(kù)連接
在Java中,采用JDBC或者ORM框架可以連接MySQL數(shù)據(jù)庫(kù)。在JDBC方式中,由Java API通過(guò)JDBC Driver連接到MySQL服務(wù)端上,使用sql語(yǔ)句實(shí)現(xiàn)對(duì)MySQL數(shù)據(jù)庫(kù)的操作;而在ORM框架中,則可以直接將Java對(duì)象映射為數(shù)據(jù)庫(kù)中的表,通過(guò)對(duì)象實(shí)例對(duì)象化的方式進(jìn)行數(shù)據(jù)管理。
3. 數(shù)據(jù)庫(kù)增刪改查
在連接MySQL數(shù)據(jù)庫(kù)之后,Java學(xué)生管理系統(tǒng)就可以進(jìn)行各種數(shù)據(jù)管理操作,例如插入、刪除、更新和查詢等。具體操作可以通過(guò)Sql語(yǔ)句實(shí)現(xiàn),也可以通過(guò)ORM框架直接操作Java對(duì)象。為了提高數(shù)據(jù)的操作效率和數(shù)據(jù)存儲(chǔ)安全性,可以采用批量插入和批量更新的操作方法,同時(shí)也需要注意到數(shù)據(jù)庫(kù)的鎖定,盡可能減少死鎖的發(fā)生。
三、Java學(xué)生管理系統(tǒng)的數(shù)據(jù)加強(qiáng)方案
數(shù)據(jù)庫(kù)管理平臺(tái)在Java學(xué)生管理系統(tǒng)中的使用,可以有效提升學(xué)生管理系統(tǒng)的數(shù)據(jù)安全性和效率。然而,僅僅是使用數(shù)據(jù)庫(kù)仍然可能存在一些問(wèn)題和短處,如數(shù)據(jù)加密、數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)等。因此,開發(fā)者需要對(duì)Java學(xué)生管理系統(tǒng)的數(shù)據(jù)方案進(jìn)行加強(qiáng),以提高數(shù)據(jù)的安全保障和數(shù)據(jù)存儲(chǔ)的穩(wěn)定性。
1. 數(shù)據(jù)庫(kù)備份
數(shù)據(jù)備份是Java學(xué)生管理系統(tǒng)中數(shù)據(jù)方案加強(qiáng)的重要一環(huán)。針對(duì)數(shù)據(jù)備份策略,可以根據(jù)項(xiàng)目具體需求制定不同的計(jì)劃,例如全排、增量備份和時(shí)間周期備份等。對(duì)于大通量數(shù)據(jù)的管理,可以采用分庫(kù)分表的方式來(lái)提高操作性能和數(shù)據(jù)庫(kù)的穩(wěn)定性。
2. 數(shù)據(jù)加密
數(shù)據(jù)加密的目的是提高數(shù)據(jù)的安全性,防止數(shù)據(jù)泄漏和被破解。針對(duì)Java學(xué)生管理系統(tǒng)的數(shù)據(jù)加密,可以使用對(duì)稱加密算法、非對(duì)稱加密算法或者哈希算法等現(xiàn)代加密技術(shù)來(lái)保證數(shù)據(jù)可控性和安全性。
3. 數(shù)據(jù)恢復(fù)
Java學(xué)生管理系統(tǒng)中的數(shù)據(jù)恢復(fù)也是非常重要的。數(shù)據(jù)恢復(fù)需要針對(duì)數(shù)據(jù)丟失、數(shù)據(jù)完整性和數(shù)據(jù)恢復(fù)成本進(jìn)行綜合考慮,制定最合理的恢復(fù)方案。除此之外,也可以進(jìn)行數(shù)據(jù)壓縮和索引優(yōu)化,以提高數(shù)據(jù)訪問(wèn)效率和減少數(shù)據(jù)存儲(chǔ)空間。
四、結(jié)語(yǔ)
Java學(xué)生管理系統(tǒng)的數(shù)據(jù)庫(kù)加強(qiáng)方案,是提高學(xué)生管理系統(tǒng)數(shù)據(jù)安全和穩(wěn)定性的有效手段。通過(guò)對(duì)數(shù)據(jù)庫(kù)的備份、加密和恢復(fù)等技術(shù)實(shí)現(xiàn)及時(shí)保護(hù)學(xué)生信息,增強(qiáng)學(xué)生管理系統(tǒng)的數(shù)據(jù)可控性與數(shù)據(jù)存儲(chǔ)效率,為數(shù)據(jù)安全保障提供了強(qiáng)有力的技術(shù)支持。未來(lái)將有更多技術(shù)及發(fā)展空間用于完善學(xué)生管理系統(tǒng)中的數(shù)據(jù)管理。
相關(guān)問(wèn)題拓展閱讀:
- (高分)急求連接數(shù)據(jù)庫(kù)的JAVA學(xué)生信息管理系統(tǒng)源代碼
- 急求一個(gè)Java編寫的學(xué)生成績(jī)管理系統(tǒng),數(shù)據(jù)庫(kù)更好能是SqlServer。先在這兒謝謝大家啦!
(高分)急求連接數(shù)據(jù)庫(kù)的JAVA學(xué)生信息管理系統(tǒng)源代碼
書店有的很好的例子,自己去書店看看,我看過(guò)。
數(shù)據(jù)庫(kù)連接(Connection)者首
數(shù)據(jù)庫(kù)連接
獲取數(shù)據(jù)庫(kù)連接有兩種方法,一種是通過(guò)驅(qū)動(dòng)程序管理器DriverManager類,另一種則是使用DataSource接口。這兩種方法都提供了了一個(gè)getConnection方法,用戶可以在程序中對(duì)它們進(jìn)行相應(yīng)處理后調(diào)用這個(gè)方猜山法來(lái)返回?cái)?shù)據(jù)庫(kù)連接。
? DriverManager類
? DataSource接口
? Connection接口
? JDBC URL
jdbc::
?穗嫌中 驅(qū)動(dòng)程序注冊(cè)方法
(1)調(diào)用Class.forName方法
(2)設(shè)置jdbc.drivers系統(tǒng)屬性
? DriverManager方法
DriverManager類中的所有方法都是靜態(tài)方法,所以使用DriverManager類的方法時(shí),不必生成實(shí)例。
DriverManager
? getConnection方法
作用是用于獲取數(shù)據(jù)庫(kù)連接,原型如下:
public static Connection getConnection(String url)
throws SQLException;
public static Connection getConnection(String url, String user, String password)
throws SQLException;
public static Connection getConnection(String url, Properties info)
throws SQLException;
? 使用DriverManager的getConnetion方法
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
Connection conn = DriverManager.getConnection
(“jdbc:odbc:sqlserver”, “sa”, “sa”);
? 使用設(shè)置jdbc.drivers系統(tǒng)屬性的方法
java -Djdbc.drivers=sun.jdbc.odbc.JdbcOdbcDriver test.java
DataSource 接口
……
//從上下文中查找數(shù)據(jù)源,并獲取數(shù)據(jù)庫(kù)連接
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(“sqlserver”);
Connection conn = ds.getConnection();
//查詢數(shù)據(jù)庫(kù)中所有記錄
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(“SELECT * FROM student”);
……
Connection 接口
Connection接口代表了已經(jīng)建立的數(shù)據(jù)庫(kù)連接,它是整個(gè)JDBC的核心內(nèi)容。Connnection接口中的方法按照它們所實(shí)現(xiàn)的功能,可以分為三類:
? 生成數(shù)據(jù)庫(kù)語(yǔ)句
? 管理數(shù)據(jù)庫(kù)事務(wù)
? 獲取數(shù)據(jù)庫(kù)信息
生成數(shù)據(jù)庫(kù)語(yǔ)句
JDBC將數(shù)據(jù)庫(kù)語(yǔ)句分成三種類型 :
? 生成Statement 語(yǔ)句 :
Connection.createStatement()
? 生成PreparedStatement 語(yǔ)句 :
Connection. prepareStatement()
? 生成CallableStatement 語(yǔ)句 :
Connection. prepareCall ()
管理數(shù)據(jù)庫(kù)事務(wù)
? 默認(rèn)情況下,JDBC將一條數(shù)據(jù)庫(kù)語(yǔ)句視為一個(gè)完整的事務(wù)??梢躁P(guān)掉默認(rèn)事務(wù)管理:
public void setAutoCommit(Boolean autoCommit) throws SQLException;
將autoCommit的值設(shè)置為false,就關(guān)掉了自動(dòng)事務(wù)管理模式
? 在執(zhí)行完事務(wù)后,應(yīng)提交事務(wù):
public void commit() throws SQLException;
? 可以取消事務(wù):
public void rollback() throws SQLException;
第二講 第四部分
數(shù)據(jù)庫(kù)語(yǔ)句
數(shù)據(jù)庫(kù)語(yǔ)句
JDBC數(shù)據(jù)庫(kù)語(yǔ)句共有三種類型:
? Statement:
Statement語(yǔ)句主要用于嵌入一般的SQL語(yǔ)句,包括查詢、更新、插入和刪除等等。
? PreparedStatement:
PreparedStatement語(yǔ)句稱為準(zhǔn)備語(yǔ)句,它是將SQL語(yǔ)句中的某些參數(shù)暫不指定,而等到執(zhí)行時(shí)在統(tǒng)一指定。
? CallableStatement:
CallableStatement用于執(zhí)行數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程。
Statement 語(yǔ)句
? executeQuery方法
? executeUpdate方法
? execute方法
? close方法
executeQuery方法
? executeQuery方法主要用于執(zhí)行產(chǎn)生單個(gè)結(jié)果集的SQL查詢語(yǔ)句(QL),即SELECT語(yǔ)句。executeQuery方法的原型如下所示:
? public ResultSet executeQuery(String sql) throws SQLException;
executeUpdate方法
? executeUpdate方法主要用于執(zhí)行 INSERT、UPDATE、DELETE語(yǔ)句,即SQL的數(shù)據(jù)操作語(yǔ)句(DML)
? executeUpdate方法也可以執(zhí)行類似于CREATE TABLE和DROP TABLE語(yǔ)句的SQL數(shù)據(jù)定義語(yǔ)言(DDL)語(yǔ)句
? executeUpdate方法的返回值是一個(gè)整數(shù),指示受影響的行數(shù)(即更新計(jì)數(shù))。而對(duì)于CREATE TABLE 或 DROP TABLE等并不操作特定行的語(yǔ)句,executeUpdate的返回值總為零。
execute方法
execute方法用于執(zhí)行:
? 返回多個(gè)結(jié)果集
? 多個(gè)更新計(jì)數(shù)
? 或二者組合的語(yǔ)句
execute方法
? 返回多個(gè)結(jié)果集:首先要調(diào)用getResultSet方法獲得之一個(gè)結(jié)果集,然后調(diào)用適當(dāng)?shù)膅etter方法獲取其中的值。要獲得第二個(gè)結(jié)果集,需要先調(diào)用getMoreResults方法,然后再調(diào)用getResultSet方法。
? 返回多個(gè)更新計(jì)數(shù):首先要調(diào)用getUpdateCount方法獲得之一更新計(jì)數(shù)。然后調(diào)用getMoreResults,并再次調(diào)用getUpdateCount獲得后面的更新計(jì)數(shù)。
? 不知道返回內(nèi)容:如果結(jié)果是ResultSet對(duì)象,則execute方法返回true;如果結(jié)果是int類型,則意味著結(jié)果是更新計(jì)數(shù)或執(zhí)行的語(yǔ)句是DDL命令。
execute方法
為了說(shuō)明如果處理execute方法返回的結(jié)果,下面舉一個(gè)代碼例子:
stmt.execute(query);
while (true) {
int row = stmt.getUpdateCount();
//如果是更新計(jì)數(shù)
if (row > 0) {
System.out.println(“更新的行數(shù)是:” + row);
stmt.getMoreResults();
continue;
}
execute方法
//如果是DDL命令或0個(gè)更新
if (row == 0) {
System.out.println(“沒(méi)有更新,或SQL語(yǔ)句是一條DDL語(yǔ)句!”);
stmt.getMoreResults();
continue;
}
//如果是一個(gè)結(jié)果集
ResultSet rs = stmt.getResultSet;
if (rs != null) {
while (rs.next()) {
// 處理結(jié)果集
. . .
}
stmt.getMoreResults();
continue;
}
break;
}
PreparedStatement 語(yǔ)句
登錄一個(gè)網(wǎng)站或BBS時(shí) :
? 使用Statement語(yǔ)句
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery
(“SELECT password FROM userinfo
WHERE id=userId”);
? 使用PreparedStatement語(yǔ)句
PreparedStatement pstmt=conn.prepareStatement
(“SELECT password FROM userinfo
WHERE id=?”);
pstmt.setString(1, userId);
PreparedStatement語(yǔ)句
? 常用的setter方法
public void setBoolean(int parameterIndex, boolean x) throws SQLException;
public void setByte(int parameterIndex, byte x) throws SQLException;
public void setShort(int parameterIndex, short x) throws SQLException;
public void setInt(int parameterIndex,int x) throws SQLException;
public void setLong(int parameterIndex, long x) throws SQLException;
public void setFloat(int parameterIndex, float x) throws SQLException;
public void setDouble(int parameterIndex, double x) throws SQLException;
public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException;
public void setString(int parameterIndex, String x) throws SQLException;
public void setBytes(int parameterIndex, byte x) throws SQLException;
public void setDate(int parameterIndex, Date x) throws SQLException;
public void setTime(int parameterIndex, Time x) hrows SQLException;
public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException;
PreparedStatement語(yǔ)句
? PreparedStatement接口是由Statement接口擴(kuò)展而來(lái)的,重寫了executeQuery方法、executeUpdate方法和execute 方法
? public ResultSet executeQuery() throws SQLException
? public int executeUpdate() throws SQLException
? public boolean execute() throws SQLException
CallableStatement語(yǔ)句
? CallableStatement語(yǔ)句是由Connection接口的prepareCall方法創(chuàng)建的,創(chuàng)建時(shí)需要傳入字符串參數(shù),參數(shù)的形式為:
? {call procedure_name}
? {? = call procedure_name}
? {call procedure_name}
CallableStatement語(yǔ)句
? 其中的問(wèn)號(hào)是參數(shù)占位符,參數(shù)共有兩種:
? IN參數(shù)
? OUT參數(shù)
? IN參數(shù)使用setter方法來(lái)設(shè)置
? OUT參數(shù)則使用registerOutParameter方法來(lái)設(shè)置
CallableStatement 語(yǔ)句
CallableStatement cstmt = con.prepareCall
(“{call getTestData(?, ?)}”);
cstmt.registerOutParameter
(1, java.sql.Types.TINYINT);
cstmt.registerOutParameter
(2, java.sql.Types.DECIMAL, 3);
cstmt.executeQuery();
byte x = cstmt.getByte(1);
java.math.BigDecimal n =
cstmt.getBigDecimal(2, 3);
第二講 第五部分
結(jié) 果 集
結(jié)果集
? JDBC為了方便處理查詢結(jié)果,又專門定義了一個(gè)接口,這個(gè)接口就是ResultSet接口。ResultSet接口提供了可以訪問(wèn)數(shù)據(jù)庫(kù)查詢結(jié)果的方法,通常稱這個(gè)接口所指向的對(duì)象為結(jié)果集。
? 有兩種方法得到結(jié)果集,一種是直接執(zhí)行查詢語(yǔ)句,將結(jié)果存儲(chǔ)在結(jié)果集對(duì)象上;另一種是不存儲(chǔ)返回結(jié)果,而在需要時(shí)調(diào)用數(shù)據(jù)庫(kù)語(yǔ)句的getResultSet方法來(lái)返回結(jié)果集
結(jié)果集
? 結(jié)果集指針
由于返回的結(jié)果集可能包含多條數(shù)據(jù)記錄,因此ResultSet 接口提供了對(duì)結(jié)果集的所有數(shù)據(jù)記錄輪詢的方法。結(jié)果集自動(dòng)維護(hù)了一個(gè)指向當(dāng)前數(shù)據(jù)記錄的指針,初始時(shí)這個(gè)指針是指向之一行的前一個(gè)位置。 next 方法就是用于向前移動(dòng)指針的
結(jié)果集
? 結(jié)果集屬性
默認(rèn)情況下,結(jié)果集是一個(gè)不可更新集,并且結(jié)果集的指針也只能向前移動(dòng)。也就是說(shuō),在得到了一個(gè)結(jié)果集之后,用戶只能按照從之一條記錄到最后一條記錄的順序依次向后讀取,而不能跳到任意條記錄上,也不能返回到前面的記錄。不僅如此,結(jié)果集的這種輪詢只能進(jìn)行一次,而不能再將指針重置到初始位置進(jìn)行多次輪詢
結(jié)果集
? 結(jié)果集屬性
類型
并發(fā)性
有效性
? 屬性的設(shè)置是在生成數(shù)據(jù)庫(kù)語(yǔ)句時(shí)通過(guò)向生成方法傳入相應(yīng)的參數(shù)設(shè)定的,而當(dāng)結(jié)果集已經(jīng)返回時(shí)就不能夠再改變它的屬性了。
結(jié)果集生成Statement語(yǔ)句共有三種方法
public Statement createStatement() throws SQLException;
public Statement createStatement
(int resultSetType, int resultSetConcurrency)
throws SQLException;
public Statement createStatement
(int resultSetType, int resultSetConcurrency,
int resultSetHoldability)
throws SQLException;
結(jié)果集
? 生成PreparedStatement語(yǔ)句共有六種方法
public PreparedStatement prepareStatement(String sql) throws SQLException;
public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys)
throws SQLException;
public PreparedStatement prepareStatement(String sql, int columnIndexes)
throws SQLException;
public PreparedStatement prepareStatement(String sql, int resultSetType,
int resultSetConcurrency)
throws SQLException;
public PreparedStatement prepareStatement(String sql, int resultSetType,
int resultSetConcurrency,
int resultSetHoldability)
throws SQLException;
public PreparedStatement prepareStatement(String sql. String columnNames)
throws SQLException;
結(jié)果集
? 生成CallableStatement語(yǔ)句共有三種方法
public CallableStatement prepareCall(String sql)
throws SQLException;
public CallableStatement prepareCall
(String sql, int resultSetType,
int resultSetConcurrency)
throws SQLException;
public CallableStatement prepareCall
(String sql, int resultSetType,
int resultSetConcurrency,
int resultSetHoldability)
throws SQLException;
結(jié)果集
結(jié)果集類型
? 結(jié)果集的類型共有三種,TYPE_FORWARD_ON類型的結(jié)果集只能向前移動(dòng)指針,而TYPE_SCROLL_INSENSITIVE類型和TYPE_SCROLL_SENSITIVE類型的結(jié)果集則可以任意移動(dòng)指針。后兩種類型的區(qū)別在于,前者對(duì)來(lái)自其它處的修改不敏感(靜態(tài)),而后者則對(duì)于別人的修改敏感(動(dòng)態(tài)視圖)。
結(jié)果集
結(jié)果集類型
? 對(duì)于可以任意移動(dòng)指針的結(jié)果集,可以用來(lái)移動(dòng)指針的方法包括:
? next 和previous :
? absolute 和relative :參數(shù)可正可負(fù)
? afterLast 、beforeFirst 、last 和first :
結(jié)果集
結(jié)果集并發(fā)性
? 結(jié)果集的并發(fā)性共有兩種,CONCUR_READ_ON的結(jié)果集是只讀而不可更新的;而CONCUR_UPDATABLE的結(jié)果集則是可以通過(guò)update方法進(jìn)行更新的。
? ResultSet接口提供了一組update方法,用于更新結(jié)果集中的數(shù)據(jù)。這些方法與PreparedStatement接口中定義的setter方法一樣,也是與類型相對(duì)應(yīng)的。所有的update方法都以u(píng)pdate開頭 。
? 所有的update方法都有兩個(gè)參數(shù),之一個(gè)參數(shù)用于指定更新的列,它可以是列名稱也可以是列的序號(hào);第二個(gè)參數(shù)則表示將要更新列的值。
結(jié)果集
結(jié)果集并發(fā)性
? Statement stmt = conn.createStatement
?(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
?ResultSet rs = stmt.executeQuery(“SELECT * FROM student ” +
?”WHERE grade=2 AND math>60 AND physics>60 AND ” +
?”chemistry>60 AND english>60 AND chinese>60″);
?while(rs.next()){
?rs.updateString(“grade”, “3”);
?rs.updateRow();
?}
結(jié)果集
結(jié)果集有效性
? 結(jié)果集的有效性是指在調(diào)用了Connection 接口的commit 方法后,結(jié)果集是否自動(dòng)關(guān)閉。所以它只有兩個(gè)可選值,即HOLD_CURSORS_OVER_COMMIT 和CLOSE_CURSORS_AT_COMMIT 。前者表示調(diào)用commit 方法之后,結(jié)果集不關(guān)閉;而后者則表示關(guān)閉結(jié)果集。
結(jié)果結(jié)果集
? 結(jié)果集的getter方法
ResultSet接口還提供了一組getter方法,用于返回當(dāng)前記錄的屬性值。它們都是以get開頭的,后接數(shù)據(jù)類型。比如,如果要返回一個(gè)float類型的列值,則應(yīng)調(diào)用getFloat方法。每一種類型的getter方法都有兩種形式,它們的名稱相同而參數(shù)不同。這兩種形式的getter方法都只有一個(gè)參數(shù),之一種形式的getter方法參數(shù)是String類型的,用于指定列的名稱;另外一種形式的getter方法參數(shù)則是int類型的,用于指定列的序號(hào)。
你要連的數(shù)據(jù)庫(kù)是SQL 還是ORACLE
但是代碼都查不多
下面的是連接SQL數(shù)據(jù)庫(kù)的代碼
你需要先創(chuàng)建個(gè)數(shù)據(jù)庫(kù),還有表,表的字段是登陸名和密碼
下面的”SA” 是登陸名 “111111” 是密碼
ORACLE 和這個(gè)查不多
import java.sql.*;//做數(shù)據(jù)庫(kù)時(shí)候必須要引入的包
import com.microsoft.jdbc.sqlserver.SQLServerDriver;
public class DBFactory {
Connection Conn=null;
PreparedStatement Stmt=null;
ResultSet Rs=null;
String driverName=”com.microsoft.jdbc.sqlserver.SQLServerDriver”;
String OracleUserName=”sa”;
String OracleUserPwd=”111111″;
String ConnUrl=”jdbc:
public Connection getConnection()
{
try {
Class.forName(driverName);
} catch (ClassNotFoundException ex) {
System.out.println(“加載驅(qū)動(dòng)程序有錯(cuò)誤”);
}
try {
Conn = DriverManager.getConnection(ConnUrl, OracleUserName,OracleUserPwd);
} catch (SQLException ex1) {
System.out.print(“取得仿陸連接的時(shí)候有錯(cuò)誤,請(qǐng)核對(duì)用戶名和密碼”);
}
return Conn;
}
這個(gè)是連接ORACLE數(shù)據(jù)庫(kù)代碼
import java.sql.*;
import oracle.jdbc.driver.OracleDriver;
public class DBFactory {
Connection Conn=null;
PreparedStatement Stmt=null;
ResultSet Rs=null;
String driverName=”oracle.jdbc.driver.OracleDriver”;
String OracleUserName=”scott”;
String OracleUserPwd=”tiger”;
String ConnUr1=”jdbc:oracle:thin:@locahost:1521:Ora”;
public Connection getConnection()
{
try {
Class.forName(driverName);
} catch (ClassNotFoundException ex) {
System.out.println(“加載驅(qū)動(dòng)程序有錯(cuò)誤”);
}
try {
Conn = DriverManager.getConnection(ConnUr1, OracleUserName,OracleUserPwd);
} catch (SQLException ex1) {
System.out.print(“取得連接時(shí)有錯(cuò)誤,備啟頃旁核請(qǐng)核對(duì)用戶名和密碼”);
}
return Conn;
}
急求一個(gè)Java編寫的學(xué)生成績(jī)管理系統(tǒng),數(shù)據(jù)庫(kù)更好能是SqlServer。先在這兒謝謝大家啦!
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.lang.*;
public class Students extends Applet implements ActionListener
{
Vector StuInf=new Vector();
StudentInf SI;
String xm;
String bj;
int i,j,xh,cj;
static int mid;
Label prompt1=new Label(“學(xué)生成績(jī)管理系統(tǒng)”);
Label prompt2=new Label(” 用戶:”);
Label prompt3=new Label(” 密碼:”);
Label prompt4=new Label(” 班級(jí):”);
Label prompt5=new Label(” 成績(jī):”);
TextField input1=new TextField(8);
TextField input2=new TextField(8);
TextField input3=new TextField(8);
TextField input4=new TextField(8);
Button btn1=new Button(“登錄”);
Button btn2=new Button(“增加”);
Button btn3=new Button(“修改”);
Button btn4=new Button(“刪除”);
public void init()
{
setLayout(new GridLayout(6,3));
add(new Label());
add(prompt1);
add(new Label());
add(prompt2);
add(input1);
add(new Label());
add(prompt3);
add(input2);
add(btn1);
add(prompt4);
add(input3);
add(new Label());
add(prompt5);
add(input4);
add(new Label());
add(btn2);
add(btn3);
add(btn4);
prompt4.setVisible(false);
prompt5.setVisible(false);
input3.setVisible(false);
input4.setVisible(false);
btn2.setVisible(false);
btn3.setVisible(false);
btn4.setVisible(false);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
btn4.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand()==”登錄”明慎)
{
String a,b;
a=input1.getText();
b=input2.getText();
input1.setText(“”);
if((a.equals(“12”)==true)&&(b.equals(“12”)==true))
{
prompt2.setText(” 姓名:”);
prompt3.setText(“升槐者 學(xué)吵薯號(hào):”);
prompt4.setVisible(true);
prompt5.setVisible(true);
input3.setVisible(true);
input4.setVisible(true);
btn2.setVisible(true);
btn3.setVisible(true);
btn4.setVisible(true);
btn3.setEnabled(false);
btn4.setEnabled(false);
btn1.setLabel(“查詢”);
input1.setText(“登錄成功”);
input1.selectAll();
}
else
input2.setText(“用戶名或密碼錯(cuò)”);
}
if(e.getActionCommand()==”增加”)
{
boolean scucss=true;
try
{
XingMing();
}
catch(EmptyException as)
{
input1.setText(“姓名不能為空”);
scucss=false;
}
try
{
xh=Integer.parseInt(input2.getText());
}
catch(NumberFormatException m)
{
input2.setText(“學(xué)號(hào)為空或格式錯(cuò)”);
scucss=false;
}
bj=input3.getText();
try
{
ChengJi();
}
catch(EmptyException as)
{
cj=-1;
}
catch(OverException dd)
{
input4.setText(“應(yīng)在0-100間”);
scucss=false;
}
catch(NumberFormatException cm)
{
input4.setText(“成績(jī)應(yīng)為數(shù)據(jù)”);
scucss=false;
}
if(scucss==true)
{
SI=new StudentInf(xm,xh,bj,cj);
Insert(SI);
}
}
if(e.getActionCommand()==”修改”)
{
xm=input1.getText();
xh=Integer.parseInt(input2.getText());
bj=input3.getText();
cj=Integer.parseInt(input4.getText());
SI=new StudentInf(xm,xh,bj,cj);
StuInf.setElementAt(SI, mid);
btn3.setEnabled(false);
}
if(e.getActionCommand()==”刪除”)
{
StuInf.removeElementAt(mid);
btn4.setEnabled(false);
input1.setText(“刪除成功”);
input2.setText(“”);
input3.setText(“”);
input4.setText(“”);
}
if(e.getActionCommand()==”查詢”)
{
boolean right=true;
try
{
xh=Integer.parseInt(input2.getText());
}
catch(NumberFormatException m)
{
input2.setText(“學(xué)號(hào)為空或格式錯(cuò)”);
right=false;
}
if(right==true)
{
search(xh);
btn3.setEnabled(true);
btn4.setEnabled(true);
}
}
}
//查找方法
public void search(int k)
{
boolean exist=false;
int low=0;
int high=StuInf.size()-1;
while(low100)
throw (new OverException());
}
//學(xué)生信息類
public class StudentInf
{
private String name;
private int StuNo;
private String ClassNo;
private int Level;
StudentInf(String xingming,int xuehao,String banji,int chengji)
{
name=xingming;
StuNo=xuehao;
ClassNo=banji;
Level=chengji;
}
public int getStuNo()
{
return StuNo;
}
public String getname()
{
return name;
}
public String getClassNo()
{
return ClassNo;
}
public int getLevel()
{
return Level;
}
}
}
java學(xué)生管理系統(tǒng)加數(shù)據(jù)庫(kù)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于java學(xué)生管理系統(tǒng)加數(shù)據(jù)庫(kù),Java學(xué)生管理系統(tǒng):數(shù)據(jù)庫(kù)加強(qiáng)版,(高分)急求連接數(shù)據(jù)庫(kù)的JAVA學(xué)生信息管理系統(tǒng)源代碼,急求一個(gè)Java編寫的學(xué)生成績(jī)管理系統(tǒng),數(shù)據(jù)庫(kù)更好能是SqlServer。先在這兒謝謝大家啦!的信息別忘了在本站進(jìn)行查找喔。
創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級(jí)標(biāo)準(zhǔn)機(jī)房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達(dá)10T,機(jī)柜接入千兆交換機(jī),能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運(yùn)行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認(rèn)可。
分享文章:Java學(xué)生管理系統(tǒng):數(shù)據(jù)庫(kù)加強(qiáng)版(java學(xué)生管理系統(tǒng)加數(shù)據(jù)庫(kù))
網(wǎng)站鏈接:http://m.fisionsoft.com.cn/article/cocopse.html


咨詢
建站咨詢
