當前位置:首頁 » 存儲配置 » java調用sql存儲過程

java調用sql存儲過程

發布時間: 2023-06-08 12:01:19

『壹』 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中如何調用資料庫的存儲過程

Java調用存儲過程的方法是通過調用Connection的實例方法prepareCall,prepareCall方法返回CallableStatement對象用於填充存儲過程的參數。prepareCall方法形參是調用存儲過程的sql語句,此參數的語法格式如下:

{callstoredProcereName(parameter-list)}

其中,storedProcereName是存儲過程名稱,parameter-list是存儲過程參數列表。

例如,存儲過程名為usp_test,有兩個輸入參數a,b。則調用代碼看起來如下所示:

=connection.prepareCall("{callusp_test(?,?)}");
callableStatement.setObject("a","value-1");
callableStatement.setObject("b","value-2");
callableStatement.execute();

『叄』 一個關於java調用mysql 存儲過程的問題

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

『肆』 在java中怎樣執行sqlserver的存儲過程,帶輸入參數和輸出參數,舉個例子

用java調用:
class.forName(\"sun.jdbc.odbc.JdbcOdbcDriver\"); //載入驅動
Connection con=DriverManager.getConnection(\"Jdbc:Odbc:test\",\"sa\",\"\"); //獲得連接
String call=\"{call proc_select(?,?)};\" //調用語句
CallableStatement proc=con.preparecall(call); //調用存儲過程
proc.setString(1,\"12345678\"); //給輸入參數傳值
proc.registerOutParameter(2,Type.varchar); //聲明輸出參數是什麼類型的
proc.execute(); //執行
String address=proc.getString(2); //獲得輸出參數

『伍』 Java調用SQL存儲過程、事務

例示一個不帶參數的簡單存儲過程。多數存儲過程的功能比本例復雜多了,但這里主要說明存儲過程的一些基本要點。如前面所述,不同DBMS定義存儲過程的語法是不同的。例如,有些DBMS使用begin
.
.
.
end或其他關鍵字指明存儲過程定義的開始和結束。在有些DBMS中,下面的SQL語句可創建一個存儲過程:
create
procere
SHOW_SUPPLIERS
as
select
SUPPLIERS.SUP_NAME,
COFFEES.COF_NAME
from
SUPPLIERS,
COFFEES
where
SUPPLIERS.SUP_ID
=
COFFEES.SUP_ID
order
by
SUP_NAME
下面的代碼將SQL語句放到一個字元串中,然後賦給變數createProcere以備後用:
String
createProcere
=
"create
procere
SHOW_SUPPLIERS
"
+
"as
"
+
"select
SUPPLIERS.SUP_NAME,
COFFEES.COF_NAME
"
+
"from
SUPPLIERS,
COFFEES
"
+
"where
SUPPLIERS.SUP_ID
=
COFFEES.SUP_ID
"
+
"order
by
SUP_NAME";
下面的代碼段使用Connection對象con來創建Statement對象,用於把創建存儲過程的SQL語句發送給資料庫:
Statement
stmt
=
con.createStatement();
stmt.executeUpdate(createProcere);
存儲過程SHOW_SUPPLIERS將作為一個可調用的資料庫對象在資料庫中編譯並存儲,調用時就像調用其他方法一樣。

『陸』 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存儲過程,簡答的存儲過程

看看這例子是怎麼調用的是不是你寫錯了
http://www.kanyinqing.com/read/it/database/411328.html

『捌』 Java中是如何調用存儲過程的

//襲拍存儲過程create or replace Procere countBySal(x0dx0a p_sal emp.sal%type,x0dx0a p_count OUT numberx0dx0a)as x0dx0abeginx0dx0a select count(*) into p_count from emp where sal >= p_sql;x0dx0aend countBySal; //調用步奏import java.sql.CallableStatement; //帶哦用存儲過程所必須的語句借口x0dx0aimport java.sql.Connection;x0dx0aimport java.sql.DriverManager;x0dx0aimport java.sql.Types;public class EmpUtil {x0dx0a x0dx0a public static int countBySal(double sal) throws Exception{x0dx0a Class.forName("oracle.jdbc.driver.OracleDriver");x0dx0a String url="jdbc:oracle:thin:@localhost:1521:test";x0dx0a Connection cn=DriverManager.getConnection(url, "scott", "tiger");x0dx0a String sql="{call countBySal(?,?)}";//調用存儲過程的語句,call後面的就是存儲過程名和需要傳入的豎棚參數x0dx0a CallableStatement cst=cn.prepareCall(sql);x0dx0a cst.setDouble(1, sal);//設置in參數的值x0dx0a cst.registerOutParameter(2, Types.INTEGER);//注冊out參數的類型x0dx0a cst.execute();x0dx0a int result = cst.getInt(2);x0dx0a cst.close();x0dx0a cn.close();x0dx0a return result;x0dx0a }x0dx0a x0dx0a public static void main(String[] args) {x0dx0a int count;x0dx0a try {x0dx0a count = EmpUtil.countBySal(3000);x0dx0a System.out.println("工余禪則資在3000元以上的人數為:"+count);x0dx0a } catch (Exception e) {x0dx0a e.printStackTrace();x0dx0a }x0dx0a x0dx0a }x0dx0a x0dx0a}

『玖』 java代碼怎麼調用存儲過程

方法如下:importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;/***LoadJDBCDriver*最基本的方法通過JDBC連接資料庫*@authorJacob**/publicclassLoadByPrimary{publicstaticvoidmain(String[]args)throwsClassNotFoundException{Stringdriver="oracle.jdbc.OracleDriver";Connectioncn=null;/***Class.forName手動載入一個類到方法區,Driver類中包含自動注冊驅動的靜態代碼塊*會自動在DriverManager中注冊驅動*/Class.forName(driver);Stringurl="jdbc:oracle:thin:@localhost:1521:ORACLE";//1521代表埠號,默認的Stringuser="用戶名";Stringpwd="密碼";try{/**Connection是介面,返回值是一個引用對象,是Oracle驅動提供實現類ojdbc7.jar*使用JDBCAPI介面,實際上是驅動實現類*/cn=DriverManager.getConnection(url,user,pwd);Statementstmt=cn.createStatement();Stringsql="SELECT*FROMstu_empWHEREdeptno=10";ResultSetrs=stmt.executeQuery(sql);while(rs.next()){System.out.println(rs.getInt("empno")+""+rs.getString("ename")+""+rs.getString("job"));}rs.close();stmt.close();}catch(SQLExceptione){e.printStackTrace();}finally{try{if(cn!=null){cn.close();}}catch(SQLExceptione2){e2.printStackTrace();}}}}這是通過preparedstatement實現更新數據,這里我把連接資料庫的方法進行了封裝,每次直接調用了。publicstaticvoidmain(String[]args){PreparedStatementDemopsd=newPreparedStatementDemo();psd.updateSalary("JACOB",3000);psd.selectSalary("JACOB");}publicvoipdateSalary(Stringename,doublesal){Stringsql="Updatestu_empsetsal=?Whereename=?";Connectioncn=null;PreparedStatementps=null;try{cn=DBPUtil.getConnection();ps=cn.prepareStatement(sql);ps.setDouble(1,sal);ps.setString(2,ename);intnum=ps.executeUpdate();System.out.println("提示:總共有"+num+"條數據已經更新!");}catch(SQLExceptione){e.printStackTrace();}finally{DBUtil.stmtClose(ps);DBUtil.connClose(cn);}}publicvoidselectSalary(Stringname){Stringsql="Select*Fromstu_empWhereename=?";Connectioncn=null;PreparedStatementps=null;ResultSetrs=null;try{cn=DBPUtil.getConnection();ps=cn.prepareStatement(sql);ps.setString(1,name);rs=ps.executeQuery();while(rs.next()){System.out.println(rs.getString("ename")+"的工資是:"+rs.getInt("sal"));}}catch(SQLExceptione){e.printStackTrace();}finally{DBUtil.stmtClose(ps);DBUtil.rsClose(rs);DBUtil.connClose(cn);}}}

熱點內容
變分的運演算法則 發布:2025-02-06 00:55:21 瀏覽:775
x2哪個配置性價比高 發布:2025-02-06 00:40:12 瀏覽:109
豬哥亮訪問張菲 發布:2025-02-06 00:37:52 瀏覽:570
期貨賬戶怎麼改密碼 發布:2025-02-06 00:32:35 瀏覽:279
qq自動上傳群文件 發布:2025-02-06 00:26:25 瀏覽:111
安卓照片放在什麼地方 發布:2025-02-06 00:26:24 瀏覽:988
linux系統鏡像iso 發布:2025-02-06 00:15:39 瀏覽:188
存儲上料模塊的意義 發布:2025-02-06 00:14:14 瀏覽:125
unix時間戳轉換php 發布:2025-02-06 00:13:27 瀏覽:404
我的世界網易電腦板好玩的槍械rpg伺服器 發布:2025-02-06 00:08:04 瀏覽:346