永发信息网

java调用mysql存储过程执行后返回了参数正确但没有插入数据也没有报错?

答案:2  悬赏:0  手机版
解决时间 2021-02-15 05:02
返回的参数是正确的,因该是执行了,但是数据没有存到数据库里,一直都是这样用的啊,没有发生过这样的问题啊!纠结中。。。。。
DROp PROCEDURE IF EXISTS regist;
create procedure regist(
in v_account varchar(20),
in v_password varchar(20),
in v_sex varchar(3),
in v_email varchar(20),
in v_QQ varchar(15),
out flag int
)
begin
select count(password) into flag from users where account=v_account;
if flag=0
then insert into users values(v_account,v_password,v_sex,v_email,v_QQ);
end if;
end;
java 代码
dbDao =DbDao.getinsance();
String sql = "{call registe(?,?,?,?,?,?)}";
CallableStatement cst= dbDao.getcst(sql);
try {
cst.setString(1, account);
cst.setString(2, password);
cst.setString(3, sex);
cst.setString(4, email);
cst.setString(5, QQ);
cst.registerOutParameter(6, Types.INTEGER);
cst.execute();
flag = cst.getInt(6);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
dbDao.close();
}
最佳答案
if flag=0
then insert into users values(v_account,v_password,v_sex,v_email,v_QQ);
end if;

flag=0就执行插入操作,否则直接跳过,不执行 ,也是不会报错的
看一下你的数据库里面是不是有满足这个SQL语句的数据:select count(password) into flag from users where account=v_account;
如果有满足的话,就不会插入数据的
全部回答
首先,把sql打印出来,然后在mysql客户端执行一下。应该就是拼写错误。 其次,建议用preparedstatement,通过设置参数的方式来执行sql,而不是将参数拼接到sql中。那样的话插入操作values(?,?,?,?)替代。然后设置参数setstring(1,username)方式。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
芮研肌肤管理中心地址好找么,我有些事要过去
丰韵堂专业丰胸美胸机构怎么去啊,我要去那办
西安邮电大学甘肃函授站(东门)地址在什么地方
在中国银行贷款失败还能到别的银行贷款吗
管理类专业有哪些?人力资源管理好就业吗
美伊格美容(脱毛美白嫩肤紧致提升)地址在哪,
园林设计有哪些岗位
利达超市我想知道这个在什么地方
2008年阳历7月7日是什么星座
名侦探柯南229集4分20秒插曲叫什么
赫米娅脱毛嫩肤工作室怎么去啊,我要去那办事
我想向银行贷款6万用于买车3年还清,请问那个
我想看十三岁十四岁的女孩穿三角裤的相片
新世纪家电二屯店我想知道这个在什么地方
甜嘴巴地址在哪,我要去那里办事
推荐资讯
金桔榨汁的快速方法
细胞增生程度除用3H-TdR参入法外,还可应用的
一人 一个x 一v看图猜成语
The server may already be running 怎么办
弗洛伊德的著作有哪些?
白天遇对头车给我爆闪?
邮政储蓄银行(通江县至诚镇支行)地址在哪,我
google网上应用商店打不开怎么办
怡发水暖电料商店怎么去啊,我要去那办事
如果把平均成绩记为0分,+9分表示比平均成绩_
明星荣耀体育培训中心在什么地方啊,我要过去
vivox3l提示软件停止运行是怎样回事拜托各位
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?