先学一遍 “JDBC之对岸的女孩看过来”
存储过程 是在数据库内已经写好了功能 直接调用就好了 比如 在数据库写好了一个a+b的功能 (a,b是入参,c是出参),jdbc直接调用这个功能 把ab两个值传入就可以得到返回的结果c 不需要再写代码了
imooc这个用户不存在
两种解决方法:
创建一个imooc用户
把imooc换成root就行了
把你的语句粘出来
MySQL储存过程的具体实现在于 SQL语句的执行。
jdbc通过连接类com.mysql.jdbc.Driver连接到MySQL,然后执行SQL语句;即实现了储存过程。
Navicat是MySQL可视化工具,在Navicat中创建的储存过程会直接映射到MySQL中。
至于为什么可以jdbc可以调用到,是因为jdbc连接着MySQL。
具体的机制(个人理解):应该是数据同步共享。
点击某个数据库,看到函数选项,右键,新建函数,过程,点击右下方完成,出现Begin ...End界面就能写了
navicate
public class ProduceDao { public static void select_nofilter() throws SQLException { // 1.获得连接 Connection conn = DBUtil.getConnection(); // 2.获得CallableStatement CallableStatement cs = conn.prepareCall("call sp_select_nofilter() "); // 3.执行存储过程 cs.execute(); // 4.处理返回结果:结果集,出参 ResultSet rs = cs.getResultSet(); while (rs.next()) { System.out.println(" 姓名:"+rs.getString("user_name")+ " 邮箱:"+ rs.getString("email") +" 电话:"+ rs.getString("mobile")); } }
public class TestProduce { public static void main(String[] args) throws SQLException { ProduceDao pd=new ProduceDao(); pd.select_nofilter(); } }
已经解决了,是图二CallableStatement cs=conn.prepareCall("call sp_select_nofilter()");打错了。
试试名字里不要有小数点。
好几个地方都错了 自己看下视屏在提问吧
call/perform Proceduce 过程名([参数1,参数2])
从账户001转账一万到002
CALL Proceduce TRANSFER(001,002,10000)
数据库里,类似于创建数据库和表
可以直接用navicat界面来创建,只需要begin end这一段,不需要前面的
为什么老师的可以加()
Navicat for MySQL