sql函数设计:

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

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

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

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

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

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

                              

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

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

 public String WriteUser(String name,String phone,String email,String pwd,String status) throws SQLException {
//使用方法:比如写入用户数据name,phone,email,pwd,status,我们可以这样写write('张三','110','110@qq.com','999','1') String sql = "{? = call writeuser(?,?,?,?,?)}"; CallableStatement cs = connection.prepareCall(sql); cs.registerOutParameter(1,Types.CHAR);//这里实在规定你函数里面返回的数据类型 cs.setString(2,name);//以下都是在向问号里面传递参数 cs.setString(3,phone); cs.setString(4,email); cs.setString(5,pwd); cs.setString(6,status); cs.execute(); String value = cs.getString(1);
if (value=="1"){
cs.close();
return "ok";
}
cs.close();
return "no";
}

  

最新文章

  1. spring squertz定时任务
  2. C语言实现penna模型
  3. python(1)
  4. MySQL命令行下查看运行状态
  5. HTML5 canvas 在线画笔绘图工具(三)
  6. exit()和_exit()和return
  7. hdu1043
  8. webService 客户端调用及异常信息First Element must contain the local name, Envelope , but found definitions
  9. SE6新特性之集合Set、Map、WeakSet和WeakMap详解
  10. code forces 436 D. Make a Permutation!
  11. NPOI:创建Workbook和Sheet
  12. NEO从入门到开窗(2) - 智能合约的面相
  13. linux中巧用ctrl-z后台运行程序
  14. 10.C++-构造函数初始化列表、类const成员、对象构造顺序、析构函数
  15. 【Android】GPS定位基本原理浅析
  16. where的顺序对运行的影响--无影响
  17. pyppeteer使用笔记
  18. linux系统编程:自己动手写一个cp命令
  19. 1. AutoEncoder介绍
  20. nodejs(一)process模块

热门文章

  1. 初步认知jQuery
  2. CodeForces - 1221E Game With String(不平等博弈)
  3. 2018 牛客国庆集训派对Day4 - H 树链博弈
  4. tensorflow tf.train.Supervisor作用
  5. 在5分钟内将Spring Boot作为Windows服务启动
  6. 【JS】307- 复习 Object.assign 原理及其实现
  7. docker-网络模式
  8. Redis数据类型和操作
  9. 《一头扎进》系列之Python+Selenium框架设计篇3- 价值好几K的框架,狼来了,狼来了....,狼没来,框架真的来了
  10. PAT1057 Stack(树状数组+倍增)