什么对于你来说是最关键的?
首先你会不会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,但是没有用分号隔开,此时,工具会当做一条来执行,只不过会报错而已。