當前位置:首頁 » 編程語言 » jdbc調用sql存儲
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

jdbc調用sql存儲

發布時間: 2022-07-03 22:51:16

Ⅰ java jdbc連接資料庫調用存儲過程插入數據

什麼對於你來說是最關鍵的?
首先你會不會jdbc連接資料庫執行一般的sql語句?如果不會,先去搜這方面的東西。
如果你只是糾結於存儲過程在java中的調用,那麼步驟如下:
1.事先寫一個存儲過程xx
2.用jdbc連接資料庫執行語句「exec xx」就可以了。如果存儲過程帶參數a和b,語句就是「exec xx a b」

Ⅱ 關於jdbc調用存儲過程的問題

這個要導包才可以用的,你先寫com再按一下"."看有沒有microsoft

沒有的話就是沒導入sqljdbc.jar這個包

com.microsoft.sqlserver.jdbc.SQLServerDriver

還有,如圖:看看你的TCP/IP設置是否開啟,並且看看埠號正確與否,

如果開啟了,埠號也對了,那我就不知道啦!╮(╯_╰)╭

Ⅲ 怎麼使用JDBC連接SQL Server

一、1、安裝好SQL Server 2012後,運行開始→所有程序→Microsoft SQL Server 2012→配置工具→SQL
Server配置管理器,如下圖1所示:

Ⅳ 1,如何在JDBC裡面調用一個存儲過程

最近做一個自動發郵件的schele,由於取數據的sql太長,直接分割很麻煩,就想到調用PL/SQL,網上查了資料做了練習,在此做下小結。
1、只有輸入參數而沒有返回結果的存儲過程。
sql:
1 create or replace procere prc_1(deptno in number,dname in varchar2,loc in varchar2)
2 is
3 begin
4 insert into dept values(deptno,dname,loc);
5 end prc_1;

java:

1 static void test1(){
2 Connection conn=null;
3 CallableStatement csmt=null;
4 try {
5 conn=JDBCUtils.getConnection();
6 conn.setAutoCommit(false);
7 csmt=conn.prepareCall("call prc_1(?,?,?)");
8 csmt.setInt(1,80);
9 csmt.setString(2,"ioc");
10 csmt.setString(3,"fhp");
11 csmt.execute();
12 conn.commit();
13 System.out.println("success insert data");
14 } catch (SQLException e) {
15 e.printStackTrace();
16 }
17 }

2、有輸入參數且有一個返回值的存儲過程。
sql:
1 create or replace procere prc_2(p_deptno in number,p_loc out varchar2) is
2 begin
3 select loc into p_loc from dept where deptno=p_deptno;
4 end prc_2;

Ⅳ JDBC怎樣調用存儲過程

callablestatementcstmt=con.preparecall("{callgettestdata(?,?)}");
cstmt.registeroutparameter(1,java.sql.types.tinyint);
cstmt.registeroutparameter(2,java.sql.types.decimal,3);
cstmt.executequery();
bytex=cstmt.getbyte(1);
java.math.bigdecimaln=cstmt.getbigdecimal(2,3);

Ⅵ java調用sql的存儲過程的問題

CallableStatementc=conn.prepareCall("{callsp_query_user(?,?)}");
//給存儲過程的參數設置值
c.setInt(1,100);//設置第一個參數的值
c.setString(1,"abc");//設置第二個參數的值
//執行存儲過程
c.execute();
conn.close();

Ⅶ 如何在JDBC里調用PLSQL創建的存儲過程

import oracle.jdbc.*;
import oracle.sql.*;
import java.sql.*;
public class ReturnIndexTable
{
Connection ociconn=null;
OracleCallableStatement stmt =null;
public String[] getTable(String in_param)
{
String[] reAry=null;
try
{
OracleDriver S_Driver=null;
if(S_Driver==null)
S_Driver=new oracle.jdbc.OracleDriver();
DriverManager.registerDriver(S_Driver);
String url="jdbc:oracle:oci8:@test";
String user="user";
String password=" password";
ociconn= DriverManager.getConnection(url,user,password);
stmt =(OracleCallableStatement)ociconn.prepareCall("begin yejf_count(?,?); end;");
// 返回的索引表最大長度(可以大於索引表實際長度)
int maxLen =31;
// 索引表元素類型
int elemSqlType = OracleTypes.VARCHAR;
//索引表元素長度(CHAR, VARCHAR or RAW),其它元素類型可忽略該項值,但該參數仍須定義
int elemMaxLen=50;
stmt.setString(1,in_param);
// 注冊返回參數
stmt.(2,maxLen,elemSqlType,elemMaxLen);
stmt.execute();
// 返回數組類型
reAry=(String[])stmt.getPlsqlIndexTable(2);
}
catch (Exception e)
{e.printStackTrace();
}
finally
{return reAry;
}
}
//關閉連接.............
}

Ⅷ 如何使用 JDBC 調用存儲在資料庫中的函數或存

JDBC調用存儲過程
步驟:
1 通過Connection對象的prepareCall()方法創建一個CallableStatement對象的實例。在使用Connection對象的prepareCall()方法時,需要傳入一個String類型的字元串,該字元串用於指明如何調用存儲過程
{?= call <procere-name>[(<arg1>,<arg2>, ...)]}
{call <procere-name>[(<arg1>,<arg2>, ...)]}
2 通過CallableStatement對象的registerOutParameter()方法注冊OUT參數
3 通過CallableStatement對象的setXxx()方法設定IN或IN OUT參數
若想將參數默認值設為Null,可以使用setNull()方法
4 通過CallableStatement對象的execute()方法執行存儲過程
5 如果所調用的是帶返回參數的存儲過程,還需要通過CallableStatement對象的getXxx()方法獲取其返回值
註:通過數據字典查看存儲過程或函數的定義
select text from user_source where lower(name)='add_fun';
調用函數:
package com.atguigu.jdbc;
import static org.junit.Assert.*;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Types;
import javax.sql.DataSource;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JDBCTest {
/**
* 如何使用 JDBC 調用存儲在資料庫中的函數或存儲過程
*/
@Test
public void testCallableStatment() {
Connection connection = null;
CallableStatement callableStatement = null;
try {
connection = JDBCTools.getConnection();
// 1. 通過 Connection 對象的 prepareCall()
// 方法創建一個 CallableStatement 對象的實例.
// 在使用 Connection 對象的 preparedCall() 方法時,
// 需要傳入一個 String 類型的字元串, 該字元串用於指明如何調用存儲過程.
String sql = "{?= call sum_salary(?, ?)}";
callableStatement = connection.prepareCall(sql);
// 2. 通過 CallableStatement 對象的
//reisterOutParameter() 方法注冊 OUT 參數.
callableStatement.registerOutParameter(1, Types.NUMERIC);
callableStatement.registerOutParameter(3, Types.NUMERIC);
// 3. 通過 CallableStatement 對象的 setXxx() 方法設定 IN 或 IN OUT 參數. 若想將參數默認值設為
// null, 可以使用 setNull() 方法.
callableStatement.setInt(2, 80);
// 4. 通過 CallableStatement 對象的 execute() 方法執行存儲過程
callableStatement.execute();
// 5. 如果所調用的是帶返回參數的存儲過程,
//還需要通過 CallableStatement 對象的 getXxx() 方法獲取其返回值.
double sumSalary = callableStatement.getDouble(1);
long empCount = callableStatement.getLong(3);
System.out.println(sumSalary);
System.out.println(empCount);
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCTools.releaseDB(null, callableStatement, connection);
}
}
@Test
public void testC3P0() throws SQLException {
DataSource dataSource = new ComboPooledDataSource("c3p0");
System.out.println(dataSource.getConnection());
}
}

Ⅸ jdbc調用存儲過程為什麼語句不能加分號

如果你在程序裡面寫sql,就不要加分號,在程序裡面編譯器會把分號當做sql本身的一部分,所以會報錯 如果是在查詢工具裡面(比如plsql),這個時候可以加上分號,在工具裡面分號是個分隔符,看到分號就標志著本條sql語句結束了; 當然不加也可以,在工具裡面看不到分號就認為本條sql沒有結束。 比如:你寫了兩條sql,但是沒有用分號隔開,此時,工具會當做一條來執行,只不過會報錯而已。