當前位置:首頁 » 存儲配置 » javamysql存儲

javamysql存儲

發布時間: 2022-05-26 13:29:22

java前提下, Mysql資料庫,一次性存儲大量數據導致內存溢出

內存溢出導致程序崩潰,也分是java層崩了,還是mysql崩了。
如果是java層崩了,注意不要一次性載入太多的數據到內存,並且不在使用的數據要徹底放棄引用關系。java雖然是自動回收,回收的原則就是一個對象不再被持有,即引用計數為零。如果數據太大,可考慮臨時文件。
如果是mysql崩了,首先增加配置緩存。一般來說mysql是不容易崩的,特別是插入操作的時候。查詢的時候如果查詢結果記錄集特別大,會導致一個查詢需要使用很大的內存空間,這種是有問題的。而插入操作都是一條一條的執行,不會導致大內存的使用。

如果僅僅是數據移植,也盡量不要用ORM框架,比如hibernate,mybatis這些東西,因為他們都有自己的緩存,直接使用JDBC比較好。

Ⅱ 一個關於java調用mysql 存儲過程的問題

在存儲過程中如果有查詢結果集,在java中執行存儲過程後,應使用其父介面Statement的getResultSet()方法獲取查詢結果集,此方法就返回ResultSet,如你上面若想獲取存儲過程中查詢結果集應如下:
ResultSet
rs
=
cst.getResultSet();
以下遍歷此rs即可...
...

Ⅲ java怎樣存數據到mysql資料庫

用java連接資料庫啊。下面給點例子可以參考,不大好,湊合看

importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;

publicclassJdbcConnection
{
privateStringdriver;
privateStringdbname;
privateStringusername;
privateStringpassword;
privateStringurl;
privateConnectioncon;
privatePreparedStatementpstmt;
privateResultSetrs;

publicJdbcConnection(){
this.driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
this.dbname=資料庫名";
this.username="資料庫賬號";
this.password="資料庫密碼";
this.url="地址加資料庫名";
}

//創建連接方法
publicConnectiongetconnection()
{
try
{
Class.forName(driver);
con=DriverManager.getConnection(url,username,password);

}catch(ClassNotFoundExceptione)
{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(SQLExceptione)
{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returncon;
}

//關閉連接方法
publicvoidcoloseConnection(Connectioncon,ResultSetrs,PreparedStatementpstmt)
{
if(rs!=null)
{
try
{
rs.close();
}catch(SQLExceptione)
{
e.printStackTrace();
}
}
if(pstmt!=null)
{
try
{
pstmt.close();
}catch(SQLExceptione)
{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
if(con!=null)
{
try
{
con.close();
}catch(SQLExceptione)
{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}

publicConnectiongetCon()
{
returncon;
}


publicvoidsetCon(Connectioncon)
{
this.con=con;
}


()
{
returnpstmt;
}


publicvoidsetPstmt(PreparedStatementpstmt)
{
this.pstmt=pstmt;
}


publicResultSetgetRs()
{
returnrs;
}


publicvoidsetRs(ResultSetrs)
{
this.rs=rs;
}


publicStringgetDriver()
{
returndriver;
}
publicvoidsetDriver(Stringdriver)
{
this.driver=driver;
}
publicStringgetDbname()
{
returndbname;
}
publicvoidsetDbname(Stringdbname)
{
this.dbname=dbname;
}
publicStringgetUsername()
{
returnusername;
}
publicvoidsetUsername(Stringusername)
{
this.username=username;
}
publicStringgetPassword()
{
returnpassword;
}
publicvoidsetPassword(Stringpassword)
{
this.password=password;
}
publicStringgetUrl()
{
returnurl;
}
publicvoidsetUrl(Stringurl)
{
this.url=url;
}

}

Ⅳ JAVA調用MySQL存儲過程

java代碼:

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

Connectioncon=DriverManager

.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=111111");

Stringsql="{callsel(?)}";

CallableStatementcs=(CallableStatement)con.prepareCall(sql);

cs.execute();

Stringname=cs.getString(1);

System.out.println(name);

創建存儲過程代碼:

dropprocereifexistssel;

createproceresel(outname1varchar(225))

begin

;

end

輸出結果:

Ⅳ 求助JAVA調用MYSQL存儲過程的問題

1.資料庫存儲過程:簡單滴說,存儲過程就是存儲在資料庫中的一個程序。

2..資料庫存儲過程作用:

第一:存儲過程因為SQL語句已經預編繹過了,因此運行的速度比較快

第二:存儲過程可以接受參數、輸出參數、返回單個或多個結果集以及返回值。可以向程序返回錯誤原因。

第三:存儲過程運行比較穩定,不會有太多的錯誤。只要一次成功,以後都會按這個程序運行。

第四:存儲過程主要是在伺服器上運行,減少對客戶機的壓力。

第五:存儲過程可以包含程序流、邏輯以及對資料庫的查詢。同時可以實體封裝和隱藏了數據邏輯。

第六:存儲過程可以在單個存儲過程中執行一系列 SQL 語句。

第七:存儲過程可以從自己的存儲過程內引用其它存儲過程,這可以簡化一系列復雜語句。

此外,如果多條SQL語句執行過程中,過程環節返回了數據作為後面環節的輸入數據,如果直接通過

SQL語句執行,勢必導致大量的數據通過網路返回到客戶機,並在客戶機運算;如果封裝在存儲過程中,

則將運算放在伺服器進行,不但減少了客戶機的壓力,同時也減少了網路流量,提高了執行的效率。


3.mysql存儲過程:

MySQL5存儲過程,用得人好像不多。按照資料庫設計原理來講,存儲過程是在db server上預編譯的,所以查詢速度會比較起純SQL語句快很多。可能是現在流行OO,導至存儲過程使用的餘地大打折扣。但如果從效果上來講,用存儲過程來實現業務規則所帶得DB SERVER壓力,比用JAVA類實現業務規則所帶來的WEB SERVER壓力要小。當然存儲過程也不應濫用,象普通的insert、update之類的語句就不需要使用存儲過程了。

MySQL創建procure的語法與sql server/Oracle差別較大。
例1:傳入參數的procere

create procere usp_test(param varchar(20)
select * from talbeName where column=param

例2:更新表的procere

create procere usp_test2 (t varchar(20))
begin
set xname = 'test';
update table set column = xname where column1=t;
end


MySQL創建存儲過程時不帶as,而且()不能省略,即便是沒有傳入參數。這一點象sql server或是oracle那樣直觀,而且聲明變數時直接用declare,不用加的@或@@(in out變數除外)。還有一點是很怪的語法,如果是以「select」為開頭的存儲過程,是不能加"begin end"的。"begin end"表示多條SQL語句的復合體。

當然,事實上幾乎沒有哪款資料庫是完全符合SQL3標準的,多少都含有自己的一些成份裡面,這也造成使用存儲過程會使程序的可移性降低。

調用procere
MySQL使用call關鍵字。例:call usp_test('test');而不是execute,同樣()是不能省略的。
創建完procere後,再看看java是如何調用procere的。
Connection conn = null;

CallableStatementcstmt=null;
ResultSetrs=null;
try{
conn=DbConn.getDbConn();//getpoolconn
CallableStatementcstmt=conn.prepareCall("{callusp_test(?)}");
call.setString(1,"test");
rs=call.executeQuery();
while(rs.next()){
Stringte=rs.getString(1);
System.out.println("te:"+te);
}
}catch(Exceptione){
System.out.println("e:"+e);
}finally{
try{
rs.close();
cstmt.close();
conn.close();
}catch(Exceptionex){
System.out.println("ex:"+ex);
}
}

這里使用的是"{call usp_test()}"來調用存儲過程。同時也可以編程傳入參數,進行查詢。

Ⅵ java語言調用mysql存儲過程(需要獲取到存儲過程中的out 變數),

用getObject方法
getObjectObject getObject(int parameterIndex)
throws SQLException以 Java 編程語言中 Object 的形式獲取指定參數的值。如果值為 SQL NULL,則驅動程序返回一個 Java null。

此方法返回一個 Java 對象,其類型對應於使用 registerOutParameter 方法為此參數注冊的 JDBC 類型。通過將目標 JDBC 類型注冊為 java.sql.Types.OTHER,可以使用此方法來讀取特定於資料庫的抽象數據類型。
參數:
parameterIndex - 第一個參數是 1,第二個參數是 2,依此類推
返回:
保存 OUT 參數值的 java.lang.Object
拋出:
SQLException - 如果 parameterIndex 無效;如果發生資料庫訪問錯誤,或者在關閉的 CallableStatement 上調用此方法

Ⅶ 小白求助 通過java對mysql進行操作,運行一次過後,數據都會保存在mysql中么 每個sq

mysql代表的是一個服務。
只要有足夠的許可權,用戶可以在mysql下任意創建資料庫,數據表等。
可以修改任何資料庫,修改任何數據表。
只要硬碟足夠,可以創建無數個庫,無數個表。
影響mysql數據的是mysql的語句,只要沒有語句被執行,mysql的數據就是穩定不變的狀態。
你運行過一次之後,只要不修改,數據在資料庫里是穩定不變的。

Ⅷ java裡面怎麼調用mysql的存儲過程的

java代碼:

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

Connectioncon=DriverManager

.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=111111");

Stringsql="{callsel(?)}";

CallableStatementcs=(CallableStatement)con.prepareCall(sql);

cs.execute();

Stringname=cs.getString(1);

System.out.println(name);

創建存儲過程代碼:

dropprocereifexistssel;

createproceresel(outname1varchar(225))

begin

;

end

輸出結果:

Ⅸ java 怎麼調用mysql 存儲過程

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Types;
/*
* 對應的存儲過程
DROP PROCEDURE IF EXISTS `pro_num_user`;
delimiter ;;
CREATE PROCEDURE `pro_num_user`(IN user_name varchar(10) ,OUT count_num INT)
READS SQL DATA
BEGIN
SELECT COUNT(*) INTO count_num FROM tab_user WHERE 'name'=user_name;
END
;;
delimiter ;
*/
public class Test {
public static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
public static final String URL = "jdbc:mysql://127.0.0.1:3306/test";
public static final String USERNAME = "root";
public static final String PASSWORD = "acbee";
public static void main(String[] args) throws Exception {
test1();
test2();
}

public static void test1() throws Exception
{
Class.forName(DRIVER_CLASS);
Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "{CALL pro_num_user(?,?)}"; //調用存儲過程
CallableStatement cstm = connection.prepareCall(sql); //實例化對象cstm
cstm.setString(1, "myd"); //存儲過程輸入參數
//cstm.setInt(2, 2); // 存儲過程輸入參數
cstm.registerOutParameter(2, Types.INTEGER); // 設置返回值類型 即返回值
cstm.execute(); // 執行存儲過程
System.out.println(cstm.getInt(2));
cstm.close();
connection.close();
}

public static void test2() throws Exception
{
Class.forName(DRIVER_CLASS);
Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "{CALL pro_number(?,?,?)}"; //調用存儲過程
CallableStatement cstm = connection.prepareCall(sql); //實例化對象cstm
cstm.setInt(1, 2); // 存儲過程輸入參數
cstm.setInt(2, 2); // 存儲過程輸入參數
cstm.registerOutParameter(3, Types.INTEGER); // 設置返回值類型 即返回值
cstm.execute(); // 執行存儲過程
System.out.println(cstm.getInt(3));
cstm.close();
connection.close();

}
}

熱點內容
我的世界好玩地鐵伺服器 發布:2024-11-15 17:48:54 瀏覽:359
1710小游戲伺服器ip 發布:2024-11-15 17:48:01 瀏覽:663
狂三腳本 發布:2024-11-15 17:31:38 瀏覽:872
附近存儲櫃 發布:2024-11-15 17:15:17 瀏覽:452
王選解決漢字存儲問題 發布:2024-11-15 17:15:11 瀏覽:660
球球大作戰安卓為什麼不能玩哪些模式 發布:2024-11-15 17:14:26 瀏覽:996
存儲器講課 發布:2024-11-15 17:14:12 瀏覽:196
安卓充電頭怎麼稱呼 發布:2024-11-15 17:11:17 瀏覽:446
獵人手游源碼 發布:2024-11-15 17:09:28 瀏覽:433
qt資源圖片編譯 發布:2024-11-15 16:59:26 瀏覽:666