我想在mysql中編寫一個存儲過程,在插入表之前驗證數據。 然後使用JDBC將「Zipcode not valid」之類的自定義消息發送回Java,以便它可以顯示在屏幕上。 這樣的事情甚至可能嗎?自定義錯誤從MySQL到jdbc
回答
起初我想強調@duffymo是絕對正確。
...但如果你還是要寫這樣的程序這段代碼可以幫助:
delimiter ;;
CREATE PROCEDURE insert_checked_zip(zipdata int)
BEGIN
IF (zipdata > 0) THEN
INSERT INTO mytable (zipcode) VALUES (zipdata);
ELSEIF
SELECT 'zip was invalid';
END IF;
END
;;
delimiter ;
注:只檢查傳遞的拉鍊是大於0
請考慮這樣做的這些在GUI級別上的檢查 - 它們更便宜,速度更快(僅列出2個優點)。
無論MySQL和JDBC做什麼,我認爲捕捉任何異常並處理顯示給用戶的是控制器的責任。
更重要的是,一路走進數據庫發現您錯誤輸入了一個郵政編碼是一種糟糕的用戶體驗。在UI中進行驗證。輸入應該沒有格式問題。如果存在違反商業規則的情況,我只希望看到那種信息。
謝謝。 但我有問題。我從程序的許多地方插入值(用例)。這讓我在不同的地方多次寫驗證。 如果我編寫用於驗證的存儲過程並在插入過程中簡單調用它,這將會得到解決。 有什麼建議嗎? TIA – user2670866
不,我仍然認爲你需要在每個地方進行UI驗證。你是否說你沒有在你的Web UI中進行任何客戶端驗證?這是一個可怕的設計。 – duffymo
它感覺更簡單。 無論如何,我已決定實施客戶端檢查。 TY – user2670866
我相信你不應該寫的sql過程,而應該考慮在觸發前寫入,每次插入行之前都會觸發它,甚至可以在驗證失敗時停止行插入。
- 1. JDBC MySQL錯誤
- 2. MYSQL JDBC錯誤
- 3. Java-JDBC-MySQL錯誤
- 4. JDBC mySQL DML錯誤
- 5. Logstash - JDBC - MYSQL配置錯誤
- 6. JDBC MySQL查詢錯誤?
- 7. java JDBC MYSQL語法錯誤
- 8. JRuby的JDBC-MySQL錯誤
- 9. JDBC Mysql的語法錯誤
- 10. 自定義錯誤
- 11. 自定義錯誤
- 12. 從自定義錯誤重定向中排除特定錯誤
- 13. IIS自定義錯誤未顯示自定義錯誤頁面
- 14. 錯誤地定義自定義類型?
- 15. 使用自定義的錯誤沒有得到重定向到自定義錯誤頁 - ASP.Net
- 16. ASP.net自定義錯誤洛
- 17. Flurl.Http自定義錯誤
- 18. 自定義CodeIgniter錯誤
- 19. 爲404.13自定義錯誤
- 20. 自定義錯誤頁401
- 21. 自定義錯誤頁
- 22. RegexParsers的自定義錯誤
- 23. 引發自定義錯誤
- 24. 自定義SimpleCursorAdapter錯誤
- 25. 自定義錯誤3
- 26. 自定義UICollectionViewCell錯誤
- 27. WCF和自定義錯誤?
- 28. 自定義錯誤模式
- 29. 自定義TableView錯誤
- 30. 自定義錯誤MVC 5
不確定我會將zip表示爲int。像CT這樣的國家的領先零是有問題的,它不能代表ZIP + 4。更好使用varchar,IMO。 – duffymo
是的,你是對的 - 但說實話,我真的想展示它如何工作。壓縮文件的檢查也只是一個存根,並取決於zip格式和數據類型。真正的實現肯定會有所不同。這是OP的工作,因爲他/她知道拉鍊的外觀如何。 – Jost
謝謝。我決定去客戶端驗證。 這個答案絕對回答了我的問題。 TY – user2670866