java管理員數(shù)據(jù)庫代碼 java編寫管理員類

求:用Java連接數(shù)據(jù)庫和簡單的數(shù)據(jù)庫操作代碼

以上的代碼都不如哥的 且看哥是怎么寫條理清晰的代碼的?。?!

成都創(chuàng)新互聯(lián)主要為客戶提供服務(wù)項(xiàng)目涵蓋了網(wǎng)頁視覺設(shè)計(jì)、VI標(biāo)志設(shè)計(jì)、全網(wǎng)整合營銷推廣、網(wǎng)站程序開發(fā)、HTML5響應(yīng)式成都網(wǎng)站建設(shè)公司、手機(jī)網(wǎng)站制作、微商城、網(wǎng)站托管及企業(yè)網(wǎng)站維護(hù)、WEB系統(tǒng)開發(fā)、域名注冊(cè)、國內(nèi)外服務(wù)器租用、視頻、平面設(shè)計(jì)、SEO優(yōu)化排名。設(shè)計(jì)、前端、后端三個(gè)建站步驟的完善服務(wù)體系。一人跟蹤測(cè)試的建站服務(wù)標(biāo)準(zhǔn)。已經(jīng)為玻璃貼膜行業(yè)客戶提供了網(wǎng)站建設(shè)服務(wù)。

package dbconnection //java 中不存在沒有包的類(講解詳細(xì)因?yàn)轫?xiàng)目需要)

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;//引入sql數(shù)據(jù)庫包

public class DBConnection{

private Connection conn=null;

private Statement stmt=null;

private Result rs=null;

private String jdbc="com.microsoft.sqlserver.jdbc.SQLServerDriver";

private String driverManager="jdbc:sqlserver://localhost:1433;databasename=HcitPos";

private String user="admin";

private int password="admin";

public DBConnection{

try{

Class.forName("jdbc");

conn.getConnection("driverManager");

}

catch(Exception e){}

}

public selectMethod(String sql){

stmt=conn.createStatement();

rs=stmt.extcuteQuery("sql");

while(rs.next()){

String title=rs.getString("title");//利用javaBean獲得數(shù)據(jù)庫中的屬性

String name=rs.getString("name");

.......

System.out.println("title");

System.out.println("name");

......

//當(dāng)然數(shù)據(jù)庫的操作有很多 這里簡單介紹下功能的實(shí)現(xiàn)

}

}

public void closeDB(){

if(rs != null) rs.close();

if(stmt != null) stmt.close();

if(conn != null) conn.close();

}

}

java圖書管理系統(tǒng)怎么連接數(shù)據(jù)庫,代碼是什么。

連接數(shù)據(jù)庫代碼:

Connection getConnect(){

Connection conn = null;

try {

Class.forName("com.mysql.jdbc.Driver");

System.out.println("創(chuàng)建驅(qū)動(dòng)成功!\n");

} catch (ClassNotFoundException e) {

System.out.println("驅(qū)動(dòng)創(chuàng)建失敗!\n");

return null;

}

try {

conn = DriverManager

.getConnection("jdbc:mysql://localhost:3306/test?

user=rootpassword=rootuseUnicode=truecharacterEncoding=GB2312");

System.out.println("數(shù)據(jù)庫連接成功\n");

} catch (SQLException e) {

System.out.println("數(shù)據(jù)庫連接失敗\n");

e.printStackTrace();

return null;

}

return conn;

}

java連接數(shù)據(jù)庫的代碼

package mysql;

import java.sql.*;

/**

* @author xys

*/

public class ConnectMysql {

public static Connection getConnection() throws ClassNotFoundException, SQLException {

String url = "jdbc:mysql://localhost:3306/databaseName";

String user = "mysqluser";

String password = "password";

String driverClass = "com.mysql.cj.jdbc.Driver";

Connection connection = null;

Class.forName(driverClass);

try {

connection = DriverManager.getConnection(url, user, password);

} catch (SQLException e) {

e.printStackTrace();

}

if (connection != null) {

System.out.println("數(shù)據(jù)庫連接成功");

} else {

System.out.println("數(shù)據(jù)庫連接失敗");

connection.close();

}

return connection;

}

public void getResult() throws ClassNotFoundException, SQLException {

// 實(shí)例化 Statement 對(duì)象

Statement statement = getConnection().createStatement();

// 要執(zhí)行的 Mysql 數(shù)據(jù)庫操作語句(增、刪、改、查)

String sql = "";

// 展開結(jié)果集數(shù)據(jù)庫

ResultSet resultSet = statement.executeQuery(sql);

while (resultSet.next()) {

// 通過字段檢索

int id = resultSet.getInt("id");

String name = resultSet.getString("name");

// 輸出數(shù)據(jù)

System.out.println("ID : " +id);

System.out.println("name :" + name);

}

// 完成后需要依次關(guān)閉

resultSet.close();

statement.close();

getConnection().close();

}

}

(高分)急求連接數(shù)據(jù)庫的JAVA學(xué)生信息管理系統(tǒng)源代碼

數(shù)據(jù)庫連接(Connection)

數(shù)據(jù)庫連接

獲取數(shù)據(jù)庫連接有兩種方法,一種是通過驅(qū)動(dòng)程序管理器DriverManager類,另一種則是使用DataSource接口。這兩種方法都提供了了一個(gè)getConnection方法,用戶可以在程序中對(duì)它們進(jìn)行相應(yīng)處理后調(diào)用這個(gè)方法來返回?cái)?shù)據(jù)庫連接。

? DriverManager類

? DataSource接口

? Connection接口

? JDBC URL

jdbc:subprotocol:subname

? 驅(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ù)庫連接,原型如下:

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ù)庫連接

Context ctx = new InitialContext();

DataSource ds = (DataSource) ctx.lookup("sqlserver");

Connection conn = ds.getConnection();

//查詢數(shù)據(jù)庫中所有記錄

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT * FROM student");

……

Connection 接口

Connection接口代表了已經(jīng)建立的數(shù)據(jù)庫連接,它是整個(gè)JDBC的核心內(nèi)容。Connnection接口中的方法按照它們所實(shí)現(xiàn)的功能,可以分為三類:

? 生成數(shù)據(jù)庫語句

? 管理數(shù)據(jù)庫事務(wù)

? 獲取數(shù)據(jù)庫信息

生成數(shù)據(jù)庫語句

JDBC將數(shù)據(jù)庫語句分成三種類型 :

? 生成Statement 語句 :

Connection.createStatement()

? 生成PreparedStatement 語句 :

Connection. prepareStatement()

? 生成CallableStatement 語句 :

Connection. prepareCall ()

管理數(shù)據(jù)庫事務(wù)

? 默認(rèn)情況下,JDBC將一條數(shù)據(jù)庫語句視為一個(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ù)庫語句

數(shù)據(jù)庫語句

JDBC數(shù)據(jù)庫語句共有三種類型:

? Statement:

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

? PreparedStatement:

PreparedStatement語句稱為準(zhǔn)備語句,它是將SQL語句中的某些參數(shù)暫不指定,而等到執(zhí)行時(shí)在統(tǒng)一指定。

? CallableStatement:

CallableStatement用于執(zhí)行數(shù)據(jù)庫的存儲(chǔ)過程。

Statement 語句

? executeQuery方法

? executeUpdate方法

? execute方法

? close方法

executeQuery方法

? executeQuery方法主要用于執(zhí)行產(chǎn)生單個(gè)結(jié)果集的SQL查詢語句(QL),即SELECT語句。executeQuery方法的原型如下所示:

? public ResultSet executeQuery(String sql) throws SQLException;

executeUpdate方法

? executeUpdate方法主要用于執(zhí)行 INSERT、UPDATE、DELETE語句,即SQL的數(shù)據(jù)操作語句(DML)

? executeUpdate方法也可以執(zhí)行類似于CREATE TABLE和DROP TABLE語句的SQL數(shù)據(jù)定義語言(DDL)語句

? executeUpdate方法的返回值是一個(gè)整數(shù),指示受影響的行數(shù)(即更新計(jì)數(shù))。而對(duì)于CREATE TABLE 或 DROP TABLE等并不操作特定行的語句,executeUpdate的返回值總為零。

execute方法

execute方法用于執(zhí)行:

? 返回多個(gè)結(jié)果集

? 多個(gè)更新計(jì)數(shù)

? 或二者組合的語句

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í)行的語句是DDL命令。

execute方法

為了說明如果處理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("沒有更新,或SQL語句是一條DDL語句!");

stmt.getMoreResults();

continue;

}

//如果是一個(gè)結(jié)果集

ResultSet rs = stmt.getResultSet;

if (rs != null) {

while (rs.next()) {

// 處理結(jié)果集

. . .

}

stmt.getMoreResults();

continue;

}

break;

}

PreparedStatement 語句

登錄一個(gè)網(wǎng)站或BBS時(shí) :

? 使用Statement語句

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery

(“SELECT password FROM userinfo

WHERE id=userId");

? 使用PreparedStatement語句

PreparedStatement pstmt=conn.prepareStatement

(“SELECT password FROM userinfo

WHERE id=?");

pstmt.setString(1, userId);

PreparedStatement語句

? 常用的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語句

? PreparedStatement接口是由Statement接口擴(kuò)展而來的,重寫了executeQuery方法、executeUpdate方法和execute 方法

? public ResultSet executeQuery() throws SQLException

? public int executeUpdate() throws SQLException

? public boolean execute() throws SQLException

CallableStatement語句

? CallableStatement語句是由Connection接口的prepareCall方法創(chuàng)建的,創(chuàng)建時(shí)需要傳入字符串參數(shù),參數(shù)的形式為:

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

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

? {call procedure_name}

CallableStatement語句

? 其中的問號(hào)是參數(shù)占位符,參數(shù)共有兩種:

? IN參數(shù)

? OUT參數(shù)

? IN參數(shù)使用setter方法來設(shè)置

? OUT參數(shù)則使用registerOutParameter方法來設(shè)置

CallableStatement 語句

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接口提供了可以訪問數(shù)據(jù)庫查詢結(jié)果的方法,通常稱這個(gè)接口所指向的對(duì)象為結(jié)果集。

? 有兩種方法得到結(jié)果集,一種是直接執(zhí)行查詢語句,將結(jié)果存儲(chǔ)在結(jié)果集對(duì)象上;另一種是不存儲(chǔ)返回結(jié)果,而在需要時(shí)調(diào)用數(shù)據(jù)庫語句的getResultSet方法來返回結(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)。也就是說,在得到了一個(gè)結(jié)果集之后,用戶只能按照從第一條記錄到最后一條記錄的順序依次向后讀取,而不能跳到任意條記錄上,也不能返回到前面的記錄。不僅如此,結(jié)果集的這種輪詢只能進(jìn)行一次,而不能再將指針重置到初始位置進(jìn)行多次輪詢

結(jié)果集

? 結(jié)果集屬性

類型

并發(fā)性

有效性

? 屬性的設(shè)置是在生成數(shù)據(jù)庫語句時(shí)通過向生成方法傳入相應(yīng)的參數(shù)設(shè)定的,而當(dāng)結(jié)果集已經(jīng)返回時(shí)就不能夠再改變它的屬性了。

結(jié)果集生成Statement語句共有三種方法

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語句共有六種方法

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語句共有三種方法

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_ONLY類型的結(jié)果集只能向前移動(dòng)指針,而TYPE_SCROLL_INSENSITIVE類型和TYPE_SCROLL_SENSITIVE類型的結(jié)果集則可以任意移動(dòng)指針。后兩種類型的區(qū)別在于,前者對(duì)來自其它處的修改不敏感(靜態(tài)),而后者則對(duì)于別人的修改敏感(動(dòng)態(tài)視圖)。

結(jié)果集

結(jié)果集類型

? 對(duì)于可以任意移動(dòng)指針的結(jié)果集,可以用來移動(dòng)指針的方法包括:

? next 和previous :

? absolute 和relative :參數(shù)可正可負(fù)

? afterLast 、beforeFirst 、last 和first :

結(jié)果集

結(jié)果集并發(fā)性

? 結(jié)果集的并發(fā)性共有兩種,CONCUR_READ_ONLY的結(jié)果集是只讀而不可更新的;而CONCUR_UPDATABLE的結(jié)果集則是可以通過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 math60 AND physics60 AND " +

? "chemistry60 AND english60 AND chinese60");

? 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)。

當(dāng)前文章:java管理員數(shù)據(jù)庫代碼 java編寫管理員類
轉(zhuǎn)載來于:http://muchs.cn/article16/hgsegg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、用戶體驗(yàn)、網(wǎng)站營銷、網(wǎng)站收錄、定制開發(fā)面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管