java 做项目踩坑,web项目踩坑过程

sql函数设计:

一开始本来是直接用Java的jdbc直接传输操作语句的。但后来学了存储过程发现存储过程可以提高不少的效率。就重构了自己对数据库的操作代码。包括:开启,查找,修改,关闭。

开启:直接使用的构造函数,以后使用的时候可以直接把对象new成一个static的变量,可以一直使用,直到使用关闭函数。

具体操作(查(find),写(write),改(change)):编写的思路是现在mysql数据库里面实现函数和存储过程。

巨坑提示1,存储过程和函数的区别是,函数必须返回一个数据,return语句必须写,而存储过程可以返回,也可以不返回这个数据。

一开始我使用的是存储过程,实现find,但是,有个巨坑的东西(mysql的设计缺陷,那就是IN的变量,即存储过程名旁边的参数,不可以直接表示字段,巨坑,还要深入学习动态的sql才可以表示字段),然后我就多写了几个函数,每个函数实现不同字段的查询,比如,findbyemail函数就是通过where email(email是字段)=参数;实现查找。

然后为了让功能齐全,就设计了多个函数,比如findbyname,findbyphone这些函数存在数据库里。然后数据库编译好。等着Java直接调用(这里比较方便的就是我们的调用直接用的是调用语句 "{call 函数名(?)}",这里的?问号,是指的你的参数。也意味着你的存储过程或者函数有多少参数就必须用多少个问号,然后发送给数据库。性能提高不少)

3685ac5e4ebf4cd8c633be12b3e9eec1.png

f45b6cbb85d7c88af217791b0a533ff2.png  巨坑提示2,在发送调用存储过程的sql语句的过程中,有可能会出现引号(')解析错位的尴尬错误,而且我还没办法纠正。比如writeuser存储过程,发送过去的语句被解析错了,就是引号错位。卡了我一上午的时间。然后就使用的函数,放弃使用存储过程。性能影响比较小。还可以返回一个数据可以判断一下。比如我的writeuser函数,我可以这样写,就不会出现这样尴尬的错误了

string  sql = “{?=call writeuser(?????)}”;

1 public String WriteUser(String name,String phone,String email,String pwd,String status) throwsSQLException {2 //使用方法:比如写入用户数据name,phone,email,pwd,status,我们可以这样写write('张三','110','[email protected]','999','1')

3

4 String sql = "{? = call writeuser(?,?,?,?,?)}";5

6 CallableStatement cs =connection.prepareCall(sql);7

8 cs.registerOutParameter(1,Types.CHAR);//这里实在规定你函数里面返回的数据类型9

10 cs.setString(2,name);//以下都是在向问号里面传递参数

11

12 cs.setString(3,phone);13

14 cs.setString(4,email);15

16 cs.setString(5,pwd);17

18 cs.setString(6,status);19

20 cs.execute();21

22 String value = cs.getString(1);23 if (value=="1"){24 cs.close();25 return "ok";26 }27 cs.close();28 return "no";29 }

这就是微学网-程序员之家为你提供的"web项目踩坑过程"希望对你有所帮助.本文来自网络,转载请注明出处:http://www.weixuecn.cn/article/8489.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值