当前位置:首页 » 存储配置 » java调mysql存储过程

java调mysql存储过程

发布时间: 2023-05-13 04:12:37

1. 求助java调用MYsql存储过程的问题

书上说的太滑埋备复杂了而且不易理解,楼上的复制粘贴的我看不懂估计你更看不懂,我就简单说吧:
比如我们要执行mysql中的student表,执行一条查询语句select * from student
java中写一个实体类student,包液胡含所有student表中的所有属性,如name,age,score等
选择jdbc的数据库沟通方式,建立connection,paredstatement;
connection中写数据库名,driver名,用户名,密码;
建立String类型sqlStr中写入sql语句select * from student ,
调用parestatement的query方法将sqlStr作为参数传过去;就好了;
query方法会返回一个resultSet类型信毁的结果集,拿到它就成功了;

2. 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();

}
}

3. 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 上调用此方法

4. 一个关于java调用mysql 存储过程的问题

在存储过程中如果有查询结果集,在java中执行存储过程后,应使用其父接口Statement的getResultSet()方法获取查询结果集,此方法就返回ResultSet,如你上面若想获取存储过程中查询结果集应如下:
ResultSet rs = cst.getResultSet();
以下遍历此rs即可... ...

5. 如何使用java程序备份和恢复MySql数据库

java用开源的ssh jar包连接到b服务器执行备份/恢复命令,同样通过命令也可以获取到备份的文件信息,恢复数据库也是一样的,通过命令把文件传输到b服务器,通过命令进行还原

6. 求助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()}"来调用存储过程。同时也可以编程传入参数,进行查询。

7. 关于java调用mysql存储过程,简答的存储过程

看看这例子是怎么调用的是不是你写错了
http://www.kanyinqing.com/read/it/database/411328.html

热点内容
如何找回因特网帐号的密码 发布:2025-02-09 05:20:05 浏览:373
树莓派源码 发布:2025-02-09 05:07:00 浏览:650
安卓手机为什么搜不到懂球帝 发布:2025-02-09 05:04:42 浏览:817
生命密码解读走什么 发布:2025-02-09 04:55:51 浏览:279
python常用正则表达式 发布:2025-02-09 04:42:53 浏览:179
机器人编程培训哪家好 发布:2025-02-09 04:37:44 浏览:308
上海怎么学习java 发布:2025-02-09 04:26:39 浏览:23
erp系统搭建备用服务器 发布:2025-02-09 04:07:38 浏览:946
戴尔服务器在bios怎么配置管理ip 发布:2025-02-09 04:01:53 浏览:551
小鱼易连云存储 发布:2025-02-09 03:59:47 浏览:92