當前位置:首頁 » 數據倉庫 » java資料庫長連接
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

java資料庫長連接

發布時間: 2023-03-24 07:22:48

1. java如何連接資料庫

JDBC(Java DataBase Connectivity)是Java資料庫連接API。JDBC能完成與一個資料庫建立連接,然後向資料庫發送sql語句,再處理資料庫返回的結果。

JDBC在設計上和ODBC相似。JDBC和資料庫建立連接的一種方式是首先建立起一個JDBC-ODBC橋接器。

首先安裝office2000,就有了Access2000,啟動Access,建立新資料庫mess.mdb,建立包含兩個文本型欄位name和sex的表,表名為member,隨便錄入一些字元串到member表中,保存在任意目錄下,比如說C盤下。然後打開控制面板 -> 管理工具 -> 數據源 (ODBC),選擇"系統DSN",也可以選擇"用戶DSN"選項卡,系統的DSN對每個用戶都適用可避免調試時出現的許可權問題,單擊「添加」,

點擊"完成",彈出的對話框里將"數據源名"一項設為你喜歡的名字,比如redsun。點"選擇",找到"C:\mess.mdb"文件,如此一個ODBC數據源就配置好了。

要連接該數據源,也就是連接資料庫,首先要建立一個JDBC-ODBC橋接器,上面已經說過了,其方法是:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Class 是Java.lang包中的一個類,通過調用它的靜態方法forName就可以建立橋接器。但建立橋接器時可能發生異常,這是我們所不想見到的,因此要捕獲這個異常:

try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){異常捕獲}

然後就是連接資料庫了,這里要用到java.sql包中的Connection類聲明一個對象,再用類DriverManager調用它的靜態方法getConnection創建這個連接。

Connection con=DriverManager.getConnection("jdbc:odbc:數據源名字","數據源用戶名","數據源密碼");

為防止連接出現異常,這里也要有個異常的處理,具體看代碼:

=========access.java============

程序代碼
import java.sql.*;
public class access{
public static void main(String args[]){
Connection con;
Statement sql; //聲明Statement對象
ResultSet rs;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){
System.out.println(""+e);
}
try{
con=DriverManager.getConnection("jdbc:odbc:redsun","","");
sql=con.createStatement();
rs=sql.executeQuery("Select * FROM member");
while(rs.next()){
String name=rs.getString(1); //獲得資料庫第一列
String sex=rs.getString(2);
System.out.println("姓名:"+name); //輸出信息
System.out.println("性別:"+sex);
}
con.close();
}
catch(SQLException el){}
}
}

編繹access.java, 然後在命令提示符中先切換到編繹後的access.class的目錄,執行:

java access 回車

以上這個例子只是簡單的連接資料庫,並靜態游標方式顯示數據,更新、刪除和添加資料庫以前學過sql的很容易理解,語法為:

String xx="sql語句";

Statement對象.executeUpdate(xx);

2. java怎麼實現長連接

應該是HTTP連接吧,HTTP連接本身的request/response模式設計就是短鏈接的,即伺服器端響應之後斷開連接。
若要做長連接,在沒余氏有具體業務的情況下,最基礎的就是建立java.net.Socket連接,自己制定協議來控制斷開。伺服器端的實現老的有標准IO(java.net.*)豎者散嫌陵,新的有NIO(java.nio.*)。有具體業務時可以考慮一些成熟的協議來實現,如XMPP等。

3. Java中如何實現與後台資料庫的連接

用JAVA連接資料庫主要有兩種方式,一是用JDBC-ODBC橋來連接,二是用相關廠商提供的相應驅動程序來連接,首先談談第一種連接。 x0dx0ax0dx0aJDBC-ODBC橋接器是用JdbcOdbc.Class和一個用於訪問ODBC驅動程序的本地庫實現的。對於WINDOWS平台,該本地庫是一個動態連接庫DLL(JDBCODBC.DLL)。 x0dx0ax0dx0a由於JDBC在設計上與ODBC很接近。在內部,這個驅動程序把JDBC的方法映射到ODBC調用上,這樣,JDBC就可以和任何可用的ODBC驅動程序進行交互了。這種橋接器的優點是,它使JDBC目前有能力訪問幾乎所有的資料庫。通行方式如圖所示: x0dx0ax0dx0a應用程序---JDBC API---JDBC-ODBC---ODBC API---ODBC層---數據源 x0dx0ax0dx0a具體操作方法為: x0dx0ax0dx0a首先打開控制面板的管理工具,打開數據源(ODBC),在用戶DSN裡面添加數據源(即你要連接的資料庫的名字),在這里假定連接SQL SERVER 2000的GoodsSupply資料庫。名稱填寫你要連接的資料庫的名稱(GoodsSupply),然後逐步設置,如果選用了使用SQL-SERVER密碼認證的話,就要輸入相應的用戶名及密碼連接到資料庫。一路下一步設置完成。 x0dx0ax0dx0a在JAVA裡面編寫程序進行測試,在這里我的程序是讓用戶輸入任意的表名與與列名,把該列的所有數據輸出。源代碼如下: x0dx0ax0dx0aimport java.io.BufferedReader; x0dx0aimport java.io.InputStreamReader; x0dx0aimport java.sql.*; x0dx0ax0dx0apublic class ODBCBridge { x0dx0ax0dx0apublic static void main(String[] args) { x0dx0aString url="jdbc:odbc:GoodsSupply"; x0dx0aStatement sm=null; x0dx0aString command=null; x0dx0aResultSet rs=null; x0dx0aString tableName=null; x0dx0aString cName=null; x0dx0aString result=null; x0dx0aBufferedReader input=new BufferedReader(new InputStreamReader(System.in)); x0dx0atry { x0dx0atry { x0dx0aClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //載入驅動 x0dx0a}catch(ClassNotFoundException e){ x0dx0aSystem.out.println("Can not load Jdbc-Odbc Bridge Driver"); x0dx0aSystem.err.print("ClassNotFoundException:"); x0dx0aSystem.err.println(e.getMessage()); x0dx0a} x0dx0aConnection con=DriverManager.getConnection(url,"USER","PASSWORD"); //使用SQL-SERVER2000認證 x0dx0aDatabaseMetaData dmd=con.getMetaData(); //DMD為連接的相應情況 x0dx0aSystem.out.println("連接的資料庫:"+dmd.getURL()); x0dx0aSystem.out.println("驅動程序:"+dmd.getDriverName()); x0dx0asm=con.createStatement(); x0dx0aSystem.out.println("輸入表名"); x0dx0atableName=input.readLine(); x0dx0awhile(true) { x0dx0aSystem.out.println("輸入列名(為空時程序結束):"); x0dx0acName=input.readLine(); x0dx0aif(cName.equalsIgnoreCase("")) x0dx0abreak; x0dx0acommand="select "+cName+" from "+tableName; x0dx0ars=sm.executeQuery(command); //執行查詢 x0dx0aif(!rs.next()) x0dx0aSystem.out.println("表名或列名輸入有誤"); x0dx0aelse { x0dx0aSystem.out.println("查詢結果為:"); x0dx0ado x0dx0a{ x0dx0aresult=rs.getString(cName); x0dx0a//資料庫語言設置為中文,不用轉換編碼 x0dx0a//result=new String(result.getBytes("ISO-8859-1"),"GB2312"); x0dx0aSystem.out.println(result); x0dx0a}while(rs.next()); x0dx0a} x0dx0a} x0dx0a}catch(SQLException ex) { x0dx0aSystem.out.println("SQLException:"); x0dx0awhile(ex!=null) { x0dx0aSystem.out.println("Message:"+ex.getMessage()); x0dx0aex=ex.getNextException(); x0dx0a} x0dx0a}catch(Exception e) { x0dx0aSystem.out.println("IOException"); x0dx0a} x0dx0a} x0dx0a}

4. 怎麼判斷java是否是長連接

長連接,指在一個TCP連接上可以連續發送多個數據包,在TCP連接保持期間,如果沒有數據包發送,需要雙方發檢測包以維持此連接,一般需要自己做在線維持。 長鏈接的操作過程是連接→數據傳輸→保持連接(心跳)→數據傳輸→保持連接(心跳)→……→關閉連接; 這就要求長連接在沒有數據通信時,定時發送數據包(心跳),以維持連接狀態,短連接在沒有數據傳輸時直接關閉就行了.

5. 如何查詢資料庫連接不釋放,和java程序一直進行鏈接,這種問題怎麼處理

不調用close()方法禪做就不會釋放連接,可以繼蠢襲緩續使用connction對象的。不過長連接一旦連接出問題斷開會出空指針錯誤。建議寫個連接池,每次從池帶模中取連接,用完了把連接返回到池中。

6. 怎麼使用JAVA連接資料庫

1、首先我們先建好資料庫,然後建立好程序的目錄,因為是適用於初學者的,所以就建立一個簡單的java project,如圖。

7. java開發實現長連接轉短鏈接建立資料庫映射,但不清楚怎麼通過短鏈接實現原系統的訪問,求大神解答,謝謝

長連接就是長連接。怎麼可以轉短連接。春岩轉了還叫」長連接「嗎?

通常短連接是指,連接,登陸,資料庫事務處理,連接關閉。

長連接是指。連接登扒備御陸,資料庫滾宏事務處理,繼續處理,如果斷了再重新連接,直到用戶主動關閉,或者是程序退出。

8. 如何實現java與資料庫的連接

JDBC連接資料庫
•創建一個以JDBC連接資料庫的程序,包含7個步驟:
1、載入JDBC驅動程序:
在連接資料庫之前,首先要載入想要連接的資料庫的驅動到JVM(Java虛擬機),
這通過java.lang.Class類的靜態方法forName(String className)實現。
例如:
try{
//載入MySql的驅動類
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驅動程序類 ,載入驅動失敗!");
e.printStackTrace() ;
}
成功載入後,會將Driver類的實例注冊到DriverManager類中。
2、提供JDBC連接的URL
•連接URL定義了連接資料庫時的協議、子協議、數據源標識。
•書寫形式:協議:子協議:數據源標識
協議:在JDBC中總是以jdbc開始
子協議:是橋連接的驅動程序或是資料庫管理系統名稱。
數據源標識:標記找到資料庫來源的地址與連接埠。
例如:(MySql的連接URL)
jdbc:mysql:
//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字元集。如果characterEncoding設置為
gb2312或GBK,本參數必須設置為true 。characterEncoding=gbk:字元編碼方式。
3、創建資料庫的連接
•要連接資料庫,需要向java.sql.DriverManager請求並獲得Connection對象,
該對象就代表一個資料庫的連接。
•使用DriverManager的getConnectin(String url , String username ,
String password )方法傳入指定的欲連接的資料庫的路徑、資料庫的用戶名和
密碼來獲得。
例如:
//連接MySql資料庫,用戶名和密碼都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("資料庫連接失敗!");
se.printStackTrace() ;
}
4、創建一個Statement
•要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3
種類型:
1、執行靜態SQL語句。通常通過Statement實例實現。
2、執行動態SQL語句。通常通過PreparedStatement實例實現。
3、執行資料庫存儲過程。通常通過CallableStatement實例實現。
具體的實現方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt =
con.prepareCall("{CALL demoSp(? , ?)}") ;
5、執行SQL語句
Statement介面提供了三種執行SQL語句的方法:executeQuery 、executeUpdate
和execute
1、ResultSet executeQuery(String sqlString):執行查詢資料庫的SQL語句
,返回一個結果集(ResultSet)對象。
2、int executeUpdate(String sqlString):用於執行INSERT、UPDATE或
DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用於執行返回多個結果集、多個更新計數或二者組合的
語句。
具體實現的代碼:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、處理結果
兩種情況:
1、執行更新返回的是本次操作影響到的記錄數。
2、執行查詢返回的結果是一個ResultSet對象。
• ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些
行中數據的訪問。
• 使用結果集(ResultSet)對象的訪問方法獲取數據:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1) ; // 此方法比較高效
}
(列是從左到右編號的,並且從列1開始)
7、關閉JDBC對象
操作完成以後要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲
明順序相反:
1、關閉記錄集
2、關閉聲明
3、關閉連接對象
if(rs != null){ // 關閉記錄集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 關閉聲明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 關閉連接對象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}

9. java Socket 短連接和長連接的區別

長連臘姿接 是一旦一個客戶端登陸上伺服器,其與伺服器之間的連接就不關閉,不管他們之間進行了多少次交易,直到客戶端退出登陸或網路衡嘩出現故障。這種技術在聯機交易系統實現有利於提高效率。
短連接是客戶端每發一個請求就與伺服器建立一個連接,交易完成後關閉連接,這種技術實現較長連接 簡單。
長:connect連上後不斷開, 進行N次收發操作.
短:每次都connect, 完成任務後立即斷開. 下次重連輪攔絕.

10. java連接資料庫的代碼

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("資料庫連接成功");
} else {
System.out.println("資料庫連接失敗");
connection.close();
}
return connection;
}

public void getResult() throws ClassNotFoundException, SQLException {
// 實例化 Statement 對象
Statement statement = getConnection().createStatement();
// 要執行的 Mysql 資料庫操作語句(增、刪、改、查)
String sql = "";
// 展開結果集資料庫
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
// 通過欄位檢索
int id = resultSet.getInt("id");
String name = resultSet.getString("name");

// 輸出數據
System.out.println("ID : " +id);
System.out.println("name :" + name);
}
// 完成後需要依次關閉
resultSet.close();
statement.close();
getConnection().close();
}
}