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 函數名(?)}",這里的?問號,是指的你的參數。也意味著你的存儲過程或者函數有多少參數就必須用多少個問號,然后發送給數據庫。性能提高不少)
巨坑提示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
總結
以上是生活随笔為你收集整理的java 做项目踩坑,web项目踩坑过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DOS Network一月项目月报
- 下一篇: XYZ DOWN-电子书