線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1517
推到 Plurk!
推到 Facebook!

例外處理

答題得分者是:Stallion
solid098
一般會員


發表:16
回覆:14
積分:6
註冊:2007-02-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-09 11:48:02 IP:203.69.xxx.xxx 訂閱
為什麼我這樣下的例外處理無法抓到錯誤,我前面是INSERT資料,但我想在寫入資料庫之前做判斷是否有值過大,如過大想關閉程式
不知道未什麼當SQL有錯誤他不會做例外處理
try
adoquery1.ExecSQL;
Except
On E: EDataBaseError do
close;
end;
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-09 12:14:17 IP:211.22.xxx.xxx 未訂閱
你的問題應該是在資料插入到資料庫前先行檢查才對吧!而不是在資料庫新增時才確定值是否過大!況且這個「值」過大的定義是啥也跟你所定義的欄位有關,你的欄位定義是smallint, integer, bigint...等等狀況都有所不同。

if ( not 各欄位的值都符合資料庫的欄位 ) then
begin
顯示錯誤訊息
離開
end;

try
開啟資料庫連線
try
adoquery1.ExecSQL;
Except
顯示新增資料時發生錯誤訊息
關閉程式。
finally
關閉資料庫連線
end;
===================引 用 solid098 文 章===================
為什麼我這樣下的例外處理無法抓到錯誤,我前面是INSERT資料,但我想在寫入資料庫之前做判斷是否有值過大,如過大想關閉程式
不知道未什麼當SQL有錯誤他不會做例外處理
try
adoquery1.ExecSQL;
Except
On E: EDataBaseError do
close;
end;
solid098
一般會員


發表:16
回覆:14
積分:6
註冊:2007-02-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-06-09 13:05:24 IP:203.69.xxx.xxx 訂閱
我所謂的值過大在於,我DB只給1byte可是他卻寫入2byte
===================引 用 Stallion 文 章===================
你的問題應該是在資料插入到資料庫前先行檢查才對吧!而不是在資料庫新增時才確定值是否過大!況且這個「值」過大的定義是啥也跟你所定義的欄位有關,你的欄位定義是smallint, integer, bigint...等等狀況都有所不同。

?if ( not 各欄位的值都符合資料庫的欄位 )? then
?begin
?? 顯示錯誤訊息
?? 離開
?end;

?try
? 開啟資料庫連線
? try
? adoquery1.ExecSQL;
? Except
?? 顯示新增資料時發生錯誤訊息
?? 關閉程式。
?finally
? 關閉資料庫連線
?end;
===================引 用 solid098 文 章===================
為什麼我這樣下的例外處理無法抓到錯誤,我前面是INSERT資料,但我想在寫入資料庫之前做判斷是否有值過大,如過大想關閉程式
不知道未什麼當SQL有錯誤他不會做例外處理
try
adoquery1.ExecSQL;
Except
On E: EDataBaseError do
close;
end;
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-06-09 13:42:45 IP:211.22.xxx.xxx 未訂閱
問題是一樣的!
在資料庫輸入前,就可以先以程式碼的方式檢測。
===================引 用 solid098 文 章===================
我所謂的值過大在於,我DB只給1byte可是他卻寫入2byte
===================引 用 Stallion 文 章===================
你的問題應該是在資料插入到資料庫前先行檢查才對吧!而不是在資料庫新增時才確定值是否過大!況且這個「值」過大的定義是啥也跟你所定義的欄位有關,你的欄位定義是smallint, integer, bigint...等等狀況都有所不同。

?if ( not 各欄位的值都符合資料庫的欄位 )? then
?begin
?? 顯示錯誤訊息
?? 離開
?end;

?try
? 開啟資料庫連線
? try
? adoquery1.ExecSQL;
? Except
?? 顯示新增資料時發生錯誤訊息
?? 關閉程式。
?finally
? 關閉資料庫連線
?end;
===================引 用 solid098 文 章===================
為什麼我這樣下的例外處理無法抓到錯誤,我前面是INSERT資料,但我想在寫入資料庫之前做判斷是否有值過大,如過大想關閉程式
不知道未什麼當SQL有錯誤他不會做例外處理
try
adoquery1.ExecSQL;
Except
On E: EDataBaseError do
close;
end;
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-06-09 16:03:40 IP:61.219.xxx.xxx 訂閱
不知道未什麼當SQL有錯誤他不會做例外處理
==>不知你是用那個資料庫,看來是你的資料庫自動裁減了你的資料,要不就是它認為那不該丟回例外。
==>看來,就像Stallion版大講的,自力救濟在所難免了。
------
Kevin
編輯記錄
kevin2004 重新編輯於 2007-06-09 16:04:33, 註解 無‧
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-06-09 18:05:28 IP:211.22.xxx.xxx 未訂閱
kevin2004 兄,我不是版主,我只是個多事的過路人。
===================引 用 kevin2004 文 章===================
不知道未什麼當SQL有錯誤他不會做例外處理
==>不知你是用那個資料庫,看來是你的資料庫自動裁減了你的資料,要不就是它認為那不該丟回例外。
==>看來,就像Stallion版大講的,自力救濟在所難免了。
kevin2004
資深會員


發表:18
回覆:463
積分:416
註冊:2005-05-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-06-11 18:25:06 IP:61.219.xxx.xxx 訂閱
Stallion大大:

世上人有分好人與壞人,大大你在我們這絕對是列在好人那一群。

只是個多事的過路人』,太客氣了,寫這麼多篇文章要花好多好多時間心血,過路人是沒那個時間的。
------
Kevin
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-06-11 20:25:21 IP:211.22.xxx.xxx 未訂閱

===================引 用 kevin2004 文 章===================
Stallion大大:
世上人有分好人與壞人,大大你在我們這絕對是列在好人那一群。
只是個多事的過路人』,太客氣了,寫這麼多篇文章要花好多好多時間心血,過路人是沒那個時間的
啊~我就是退休前閒來無事哩!
系統時間:2024-07-02 7:49:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!