程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c-關於數程序鏈接數據庫的問題,向老手請教一下

c-關於數程序鏈接數據庫的問題,向老手請教一下

編輯:編程解疑
關於數程序鏈接數據庫的問題,向老手請教一下

目前還在學習階段,語言是C/C#數據庫是MYSQL,想請教一下幾個問題;
1.客戶端每次鏈接數據庫的時候,有沒有必要檢查數據是否以及開啟?測試的時候發現如果數據庫沒有啟動或中途關關閉的話,程序會直接卡死或退出,本人的想法是每次連接數據庫的時候用try catch之類的語句測試一下,不讓程序卡死影響其它的功能,但是這樣好像比較費性能,由於沒有參與過比較好的案子這裡向大家請教一下這樣做好不好,或者有什麼更好的解決方法。
2.給客戶端調用的存儲過程,輸入的參數要不要檢驗是否合法,同樣是性能問題,因為經驗告訴我們不要信任用戶的任何輸入,前輩們也這樣講,我擔心的是通過破解客戶端中的內容,拿到數據庫的一些信息以後直接繞過登錄驗證向存儲過程傳數據,從而污染數據庫,不知道這種擔心是否多余,另外還是性能問題,如果存儲過程中的語句過多的話勢必影響數據庫的性能,是否有必要做取捨?
3.以我目前的水平來理解,如果一個程序要向數據庫中讀/取數據,那麼這個程序中應該是要保存相應的數據庫用戶名和密碼的,那麼如何保證它們的安全?用戶權限肯定是要設置的,但是只要有寫權限就有可能向數據庫中寫入垃圾信息,一般比較正規的處理方法是怎樣?

水平有限,可能講的不是很清楚,大概就是那麼回事,麻煩大家了!

最佳回答:


1 try catch能解決異常導致程序退出的問題,但是沒法解決卡死的問題,要解決卡死的問題,你需要開一個線程,在線程裡面連接判斷。同時把connection對象的timeout設置地小一些。
2 如果是C#,用sqlparamater,這樣可以防止sql拼接引起的注入問題。同時,對於敏感的業務,建議在服務器對格式和內容做額外的判斷。性能沒有你想得那麼嚴重。再說再怎麼考慮性能,首先正確性是第一的。
3 對密碼做md5編碼,然後把編碼後的值存入數據庫。登錄判斷的時候,對用戶輸入的密碼也做md5,和存在數據庫的比較。
避免垃圾數據一個是你的業務層的過濾和判斷,一個是完善的日志,使得一旦有人搞破壞,你可以及時發現,並且用技術以外的手段追究他。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved