freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

數據庫系統(tǒng)設計與開發(fā)畢業(yè)論文-資料下載頁

2025-06-20 00:19本頁面
  

【正文】 。(user)。50. }51. }52. 53. /**54. *刪除用戶55. *@paramuser56. */57. publicvoiddelete(Useruser){58. if(()=0){59. (用戶id無效,無法刪除!!)。60. }else{61. (user)。62. }63. }64. 65. }這里我們還需要額外的兩個類:一個是異常類,因為我們需要自定義我們自己的一個異常,這樣方便進行捕獲:1. package2. 3. publicclassDaoExceptionextendsRuntimeException{4. 5. privatestaticfinallongserialVersionUID=1L。6. 7. publicDaoException(){8. 9. }10. 11. publicDaoException(Exceptione){12. super(e)。13. }14. 15. publicDaoException(Stringmsg){16. super(msg)。17. }18. 19. publicDaoException(Stringmsg,Exceptione){20. super(msg,e)。21. }22. 23. }同時,我們這里面采用工廠模式進行實例化UserDao對象:1. package2. 3. import4. import5. 6. publicclassDaoFactory{7. /**8. *單例模式9. */10. privatestaticUserDaouserDao=null。11. privatestaticDaoFactoryinstance=newDaoFactory()。12. 13. privateDaoFactory(){14. /**15. *通過讀取屬性文件來動態(tài)的加載Dao層類16. */17. Propertiesprop=newProperties()。18. try{19. FileInputStreamfis=newFileInputStream(src//weijia/domain/)。20. (fis)。21. StringclassName=(userDaoClass)。22. Class?clazz=(className)。23. userDao=(UserDao)()。24. ()。25. }catch(Throwablee){26. thrownewExceptionInInitializerError(e)。27. }28. }29. 30. publicstaticDaoFactorygetInstance(){31. returninstance。32. }33. 34. publicUserDaocreateUserDao(){35. returnuserDao。36. }37. 38. }這里面是讀取properties文件,然后去讀取類名進行加載,這種方式是很靈活的1. package2. 3. import4. 5. publicclassTestDemo{6. 7. publicstaticvoidmain(String[]args)throwsException{8. UserServiceuserService=newUserService()。9. (添加用戶:)。10. (newUser(1,jiangwei,newDate(()),300))。11. }12. 13. }這里我們看到其實這些操作真的很簡單,就是按照那樣的幾個步驟來操作即可,同時我們還需要將結構進行分層,以便管理,我們這里面測試的時候,撇開了創(chuàng)建數據庫的一個環(huán)節(jié),至于那個環(huán)節(jié),也是不難的,可以從網上搜索一下即可。Statement中的sql依賴注入的問題接著來看一下關于我們上面的例子中使用了Statement進行操作的,其實這里面是存在一個問題的,就是會有sql注入的問題,我們先來看一下這個問題:查詢學生信息:1. /**2. *使用Statement讀取數據3. *@paramname4. *@throwsSQLException5. */6. staticvoidread(Stringname)throwsSQLException{7. Connectionconn=null。8. Statementst=null。9. ResultSetrs=null。10. try{11. conn=()。12. //創(chuàng)建語句13. st=()。14. //執(zhí)行語句(不建議使用*)15. Stringsql=selectid,namefromuserwherename=39。+name+39。16. rs=(sql)。17. //根據列名取數據18. while(()){19. ((id)+\t+(name)+\t)。20. }21. }catch(SQLExceptione){22. ()。23. }catch(Exceptione){24. ()。25. }finally{26. (rs,st,conn)。27. }28. }我們使用代碼測試一下:1. read(39。or1or39。)。我們運行會發(fā)現,將查詢出所有的學生的記錄,這個是什么原因呢?我們不妨將sql打印一下會發(fā)現:1. selectid,namefromuserwherename=39。39。or1or39。39。擦,因為sql語句中把1認為是true,又因為是或的關系,所以將所有的學生的信息查詢出來了,這個就是sql注入,因為Statement會把傳遞進來的參數進行一下轉化操作,用引號包含一下,所以會出現這個問題,那么我們該怎么解決呢?有的同學說我們可以添加一句過濾的代碼,將傳遞的參數取出單引號,這個方法是可行的的,但是這個只能解決那些使用單引號的數據庫,可能有的數據庫使用的是雙引號包含內容,那就不行了,所以應該想一個全套的方法,那么這里我們就是用一個叫做:PreparedStatement類,這個類是Statement類的子類:我們這里只看這個sql注入的問題:我們將上面讀取用戶信息的代碼改寫成PreparedStatement:1. /**2. *使用PreparedStatement3. *@paramname4. *@throwsSQLException5. */6. staticvoidreadPrepared(Stringname)throwsSQLException{7. Connectionconn=null。8. PreparedStatementst=null。9. ResultSetrs=null。10. try{11. conn=()。12. //執(zhí)行語句(不建議使用*)13. Stringsql=selectid,namefromuserwherename=?。14. //創(chuàng)建語句15. st=(sql)。16. (1,name)。17. rs=()。18. //根據列名取數據19. while(()){20. ((id)+\t+(name)+\t)。21. }22. }catch(Exceptione){23. 24. }25. }之后我們在執(zhí)行:1. readPrepared(39。or1or39。)。就不會全部查出來了,只會查詢空結果,因為表中沒有一個學生的名字叫做 39。or 1 or39。JDBC中特殊數據類型的操作問題第一個是日期問題:我們在操作日期問題的時候會發(fā)現,使用PreparedStateme
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1