三层代码讲解--第二课 DATE :2004-05-25

主题:三层代码讲解--第二课
主持人:老吴
时间:2004-05-25

2004-05-25 15:07:16 煙灰缸(2282902)
繼續昨天的東西

2004-05-25 15:08:58 煙灰缸(2282902)
請大家打開swServer.prj和dmDefault.prj (用兩個Delphi)

2004-05-25 15:15:54 煙灰缸(2282902)
誰記得昨天講到哪了?

2004-05-25 15:16:25 Jackey(15677613)
  procedure ApplyUpdates(const Delta: OleVariant; TableName, KeyField: WideString); stdcall;
    procedure ApplyUpdatesWithOle(const DeltaName, TableName, KeyField: WideString); stdcall;
    procedure ApplyUpdatesRecordInfo(const DeltaName, TableName, KeyField: WideString); stdcall;
    procedure ApplyUpdatesWithDataSet(const DataSet: integer; TableName, KeyField: WideString); stdcall;
 

2004-05-25 15:19:02 煙灰缸(2282902)
好,請大家打開dmBaseModule 和dmBaseService

2004-05-25 15:20:29 煙灰缸(2282902)
    procedure ApplyUpdates(const Delta: OleVariant; TableName, KeyField: WideString); stdcall;
    procedure ApplyUpdatesWithOle(const DeltaName, TableName, KeyField: WideString); stdcall;
    procedure ApplyUpdatesWithDataSet(const DataSet: integer; TableName, KeyField: WideString); stdcall;
看一下這三個有相同的和不同的地方。

2004-05-25 15:21:39 煙灰缸(2282902)
找到程序位置了嗎

2004-05-25 15:22:21 Jackey(15677613)
有不同?

2004-05-25 15:22:58 煙灰缸(2282902)
是有不同,但要你大概看看有何不同(實現部分)

2004-05-25 15:24:07 Jackey(15677613)
BaseModule是接口,沒實現啊?

2004-05-25 15:24:36 煙灰缸(2282902)
dmBaseModule 接口對應的實現在dmBaseService 

2004-05-25 15:25:04 Jackey(15677613)
sorry.是dmbaseservice的三個不同的實現.看到.

2004-05-25 15:26:20 煙灰缸(2282902)
llyygg 還記得昨天我們討論DSP的內容麼?

2004-05-25 15:26:40 llyygg(13029886)
記得.

2004-05-25 15:27:08 llyygg(13029886)
你先講講吧.

2004-05-25 15:27:16 煙灰缸(2282902)
我提問你一個問題好不?

2004-05-25 15:28:26 煙灰缸(2282902)
你一般用DSP時把它用在何處,也就是說,它的給你功能是什麼?

2004-05-25 15:29:35 煙灰缸(2282902)
也有個問題提問Jackey

2004-05-25 15:29:47 llyygg(13029886)
1.在GetData的時候用Result := Dsp.Data;傳數據給Client
2.在Client提交數據的時候用Dsp的事件控制數據更新.

2004-05-25 15:30:37 煙灰缸(2282902)
right,剛好和今天講的相關。 

2004-05-25 15:32:10 煙灰缸(2282902)
有誰願意做交互式討論的,請舉手一下好麼?

2004-05-25 15:32:49 llyygg(13029886)
什麼叫交互式討論-_-!,我真的不懂.

2004-05-25 15:33:14 煙灰缸(2282902)
就是可能會一問一答一解題。

2004-05-25 15:33:17 Jackey(15677613)
試不試, 老板不抓我去,我可以說兩句.

2004-05-25 15:34:35 llyygg(13029886)
沒有試過,但現在大家做系統的思路都不一樣,我怕大家概念不統一,容易答非所問,不知道擔心是不是多餘的...

2004-05-25 15:34:37 煙灰缸(2282902)
也就是說,我在講一些東西的時候,會提一些相關的問題,讓大家來回答,再解題。。。。。

2004-05-25 15:35:00 llyygg(13029886)
好的.

[电话中A1]

2004-05-25 15:54:16 煙灰缸(2282902)
斜陽,你也回答等一下我提問的問題好不?

2004-05-25 15:55:38 煙灰缸(2282902)
如果,你的ClientDataSet已經有數據了,而且正在使用中,你要更新一條數據,你如何做。

2004-05-25 15:55:57 煙灰缸(2282902)
是更新ClientDataSet的一條記錄。

2004-05-25 15:56:41 斜陽(249208513)
那原來的CDS(簡稱了)中有多少條未更新的數據呢?

2004-05-25 15:56:54 llyygg(13029886)
只更新一條嗎?我現在的系統,cds修改了多少,就必須提交多少...

2004-05-25 15:57:03 銀狼(43225570)
我想只能先close它,寫commandtext更新,在從新返回數據吧

2004-05-25 15:57:16  痞子(27034323)
用delta更新吧?

2004-05-25 15:57:34 煙灰缸(2282902)
這不管,你“只是”更新“當前這一條“

2004-05-25 15:58:17 煙灰缸(2282902)
也就是說,cds可能已經有Modified了。

2004-05-25 15:58:36 斜陽(249208513)
這個有點不太好處理了,如果你用其它的方式更新了這一條到服務器上,那麼遠了的CDS和服務器就不好同步了

2004-05-25 15:59:03 斜陽(249208513)
是原來,不是遠了

2004-05-25 15:59:26 煙灰缸(2282902)
其它朋友的意思呢?

2004-05-25 16:00:10 鬆鼠(64652023)
不好處理M

2004-05-25 16:00:11 llyygg(13029886)
我的方法就是提交Delta到服務器端去更新.有什麼問題嗎?我不理解這個問題的含義.

2004-05-25 16:00:54 斜陽(249208513)
如果單純從實現的角度講難度應該是不大

2004-05-25 16:01:48 煙灰缸(2282902)
如果服務層只返回一條記錄給你,讓你更新當前這一條,你能更新嗎?

2004-05-25 16:02:39 斜陽(249208513)
不能嗎?你可以說一下難點在哪裡?

2004-05-25 16:02:44 llyygg(13029886)
返回一條,更新一條,沒有問題啊, 修改了二條,只更新其中一條,我做不到.

2004-05-25 16:03:44 銀狼(43225570)
到了客戶端的數據還可以該嗎?應該到服務器上改,在反回吧

2004-05-25 16:04:10 煙灰缸(2282902)
打個比喻,cds修改了三條記錄,用戶只想更新一條,不想更新全部,能做得到嗎?

2004-05-25 16:04:21 llyygg(13029886)
做不到

2004-05-25 16:04:35 煙灰缸(2282902)
其它朋友呢?

2004-05-25 16:04:44 簡單故事(121882058)
那還不如在程式中控制用戶只能修改它想要更新的那一條,

2004-05-25 16:05:00 鬆鼠(64652023)
這樣子有什麼目的啊

2004-05-25 16:05:19 簡單故事(121882058)
很好理解,你不修改就不會更新,,你修改就更新,,

2004-05-25 16:05:53 煙灰缸(2282902)
先不管目的,因為這和今天的課相關。

2004-05-25 16:06:02 斜陽(249208513)
  ClientDataSet1.Fields[0].Oldvalue
  ClientDataSet1.Fields[0].Newvalue
通過這個可以知道我對當前的記錄作過什麼修該
也可以利用這個手工和成Update語句啊
如果我的CDS中就有這一條,直接 ApplyUpdates不可以嗎?

2004-05-25 16:06:43 煙灰缸(2282902)
呵呵,不要太相信Oldvalue和NewValue,有時它會騙你的。

2004-05-25 16:06:54 llyygg(13029886)
就算生成了Update語句,你如何和Server端的數據合並呢?

2004-05-25 16:07:47 簡單故事(121882058)
我想到了一個方法,不知可不可以??

2004-05-25 16:07:53 煙灰缸(2282902)
請說。

2004-05-25 16:08:41 鬆鼠(64652023)
對了,怎麼判斷那條記錄已經有人在使用了

2004-05-25 16:08:56 簡單故事(121882058)
可以在DataSetProvider的AfterUpdatarecord事件裡控制自己撰寫更新語句

2004-05-25 16:09:20 簡單故事(121882058)
這個事件不是有一個applied布爾參數?

2004-05-25 16:09:59 簡單故事(121882058)
將它的值設為true,delphi就不會自動生產更新語句

2004-05-25 16:10:27 簡單故事(121882058)
然後自己撰寫提交語 句,,

2004-05-25 16:11:01 煙灰缸(2282902)
也許這個問題有點麻煩,算了,倒回來時再講吧,因為它和cds相關,需要一點技巧。

2004-05-25 16:12:04 煙灰缸(2282902)
大家都知道,OleVariant比較其它類型都大


2004-05-25 16:15:32 煙灰缸(2282902)
cds給dsp的也是Olevariant

2004-05-25 16:16:31 煙灰缸(2282902)
所以,我們寫“規則層”DLL時就是注意了。

2004-05-25 16:16:54 銀狼(43225570)
注意什麼?

2004-05-25 16:17:04 煙灰缸(2282902)
不要老是把同樣的OleVariant“送過來”又“送回去”

2004-05-25 16:17:51 煙灰缸(2282902)
也就是說,能在“事務層”處理的“大”數據不要在“規則層”中去取得。

2004-05-25 16:18:03 斜陽(249208513)
這樣會減緩傳送速度還是增加流量呢?

2004-05-25 16:18:14 煙灰缸(2282902)
都有。

2004-05-25 16:19:50 煙灰缸(2282902)
所以,上面的三個ApplyUpdates就是這個原因。

2004-05-25 16:19:57 煙灰缸(2282902)
其中

2004-05-25 16:20:02 斜陽(249208513)
我以前用SocketConnection1.InterceptGUID
為其指定一個接口,將要傳送的數據壓縮、加密,然後再傳輸,這樣效果不錯

2004-05-25 16:20:52 煙灰缸(2282902)
是,這樣很不錯。

2004-05-25 16:21:54 煙灰缸(2282902)
如果只是在“事務層”和“規則層”之間,就沒必要加密了,它都是屬於同一個Application的。

2004-05-25 16:22:11 斜陽(249208513)
那倒是

2004-05-25 16:22:36 煙灰缸(2282902)
大家統一一下“單詞”好了。
“事務層”是指swServer2.prj
“規則層”是指dmDefault.prj
“規則裝載管理器”是指swMMC.prj
“SQL語句管理器”是指StoreProc 和sqlDesigner.exe

2004-05-25 16:24:39 煙灰缸(2282902)
還有其它忘了說的嗎?

2004-05-25 16:26:33 煙灰缸(2282902)
沒了?繼續下面的。

2004-05-25 16:27:08 斜陽(249208513)
繼續吧,遇到了再定義好了

2004-05-25 16:27:52 煙灰缸(2282902)
    procedure ApplyUpdates(const Delta: OleVariant; TableName, KeyField: WideString); stdcall;
意思是讓事務層去更新數據(數據在Delta裡)

    procedure ApplyUpdatesWithOle(const DeltaName, TableName, KeyField: WideString); stdcall;
意思是讓事務層去更新數據(數據不在Delta裡,而是在事務層的Client傳來的參數表裡,這樣可以省去時間)

    procedure ApplyUpdatesWithDataSet(const DataSet: integer; TableName, KeyField: WideString); stdcall;
  數據已經被規則層更正過了,讓事務層去找對應的“DataSet”去更新(實際上也是去找對應DataSet的Delta)

2004-05-25 16:31:41 煙灰缸(2282902)
DataSet是指預定義的cds

2004-05-25 16:32:01 煙灰缸(2282902)
在swServer裡,有3個預定義的DataSet

2004-05-25 16:32:29 斜陽(249208513)
說實在的,我有點跟不上,不知道別人有沒有這個感覺。

2004-05-25 16:32:54 煙灰缸(2282902)
應該不是你跟不上,而是我講得不清楚。。。。。。。。。。

2004-05-25 16:34:11 斜陽(249208513)
你的那些 ApplyUpdates 在哪裡定義的呢?

2004-05-25 16:34:31 斜陽(249208513)
又是幹什麼的呢?客戶端要怎樣將數據提交上來呢?

2004-05-25 16:34:43 煙灰缸(2282902)
看來要搞一個簡單的DEMO(Client和Server,Rule)都有的才行。

2004-05-25 16:34:53 Jackey(15677613)
回來了.先看看記錄.

2004-05-25 16:36:09 dana(81828019)
是啊,我們真是跟不上.
弄個簡單點的吧,然後再來深入講,這樣比較容易理解,
我現在是有點找不著門的感覺,我也想自已動手做一個,可是不知從哪入手。

2004-05-25 16:36:48 煙灰缸(2282902)
這樣吧,明天暫停開課討論,後天我整理出一個簡單的,能運行的DEMO出來,大家一邊看一邊討論會比較好一點。

2004-05-25 16:37:28 斜陽(249208513)
你真好!(有點肉麻噢)

2004-05-25 16:37:56 煙灰缸(2282902)
但你也別太空著,要讓你做點東西。。。。

2004-05-25 16:38:20 斜陽(249208513)
不會吧,救命啊......!

2004-05-25 16:38:44 天之痕_若虹(86278566)
能否少用第三方控件行嗎,因為做為講客,簡單一些更容易明白

2004-05-25 16:38:57 dana(81828019)
這樣實在是太好了。
最好能有一個關于這個Demo的簡單說明
這樣大家都能提前理解清楚,再來討論。
 
2004-05-25 16:41:07 Jackey(15677613)
三個update分別有什麼目的?
比如.一般情況我會在client有個clientdataset.update時,我是採用delphi的方法. clientdateset.applyupdate. 傳delta給server.server調用DSP的update更新後台。那麼。update delta對應的應是delphi的方法。 update ole對應用于 getdata(ole....)?  updatedataset 做?

2004-05-25 16:41:09 斜陽(249208513)
ㄛO我跟不上時代,是這世界變化太快!

2004-05-25 16:41:09 煙灰缸(2282902)
其它的就只有我寫的幾個數據控件了。

2004-05-25 16:41:22 llyygg(13029886)
一個DEMO必須要嗎.......555...

2004-05-25 16:41:34 煙灰缸(2282902)
什麼必須要?

2004-05-25 16:42:09 llyygg(13029886)
第三方控件, 你先回答Jackey的問題吧

2004-05-25 16:42:42 煙灰缸(2282902)
可能是我用慣了DevExpress吧,我都不用Delphi標準Grid了。

2004-05-25 16:43:07 Jackey(15677613)
哈。 我都是用dxdbtreelist.

2004-05-25 16:43:17 斜陽(249208513)
我也不用,不過我用EHlib的

2004-05-25 16:43:41 dana(81828019)
沒事,如果只用這一個,大家就都下載吧,

2004-05-25 16:43:57 Jackey(15677613)
據說大數據量時dev會比ehlib慢許多,但我沒有用過grid大數據。

2004-05-25 16:44:23 煙灰缸(2282902)
但它的功能的確比較好用。

2004-05-25 16:44:34 斜陽(249208513)
作三層的哪敢下載大數據啊

2004-05-25 16:45:12 斜陽(249208513)
一次下個百八十條的還得是不帶BLOB字段的

2004-05-25 16:45:46 煙灰缸(2282902)
不會吧,帶圖片的我都下載啊。

2004-05-25 16:46:17 斜陽(249208513)
我通常是單獨處理圖片

2004-05-25 16:46:31 煙灰缸(2282902)
有個忙要幾位幫忙的。。。。。。

2004-05-25 16:46:59 煙灰缸(2282902)
我提名好不?

2004-05-25 16:47:21 煙灰缸(2282902)
Jackey,llyygg,斜陽。

2004-05-25 16:47:26 Jackey(15677613)
剛才的問題2:

也就是說,能在“事務層”處理的“大”數據不要在“規則層”中去取得? 不大明白. 事務層處理的數據指的是在事務層直接get數據或update server.  但update如果有規則呢?

2004-05-25 16:48:18 煙灰缸(2282902)
Jackey先不管這個問題,等後天DEMO出來可能就清楚了。

2004-05-25 16:48:20 斜陽(249208513)
哪一層同客戶端直接通訊呢?

2004-05-25 16:48:25 Jackey(15677613)
所說的大數據是指的? 大的data?  (delta都是比較小的.)

2004-05-25 16:48:33 Jackey(15677613)
ok

2004-05-25 16:48:58 Jackey(15677613)
剛才沒聽, 有一大堆問題,可能其它人了解,我都不是太明。

2004-05-25 16:49:04 煙灰缸(2282902)
Jackey,llyygg,斜陽 明天幫我一個小忙行不?

2004-05-25 16:49:14 llyygg(13029886)
好的,說吧

2004-05-25 16:49:17 Jackey(15677613)
?

2004-05-25 16:49:22 斜陽(249208513)
OK


2004-05-25 16:49:56 煙灰缸(2282902)
我把Demo整理後,三位先幫我TEST一下,把錯誤返回給我修改,好不?

2004-05-25 16:50:05 Jackey(15677613)
ok

2004-05-25 16:50:13 llyygg(13029886)
ok

2004-05-25 16:50:19 斜陽(249208513)
從圖上看是業務層直接和客戶端打交到。是嗎?
?

2004-05-25 16:50:34 楓長舞(273966879)
下午有事,沒來聽。能把聊天記錄給我一份嗎?

2004-05-25 16:50:45 Jackey(15677613)
斜陽:不是.


2004-05-25 16:51:17 煙灰缸(2282902)
llyygg好象有發布了記錄,楓長舞找他要一下好不?

2004-05-25 16:51:27 斜陽(249208513)
那是哪一層?我想知道這個,要不然我跟不上你們說的。

2004-05-25 16:51:42 llyygg(13029886)
等一下.我上傳.

2004-05-25 16:52:47 Jackey(15677613)
client -->|數據轉換(事務)-->interface-->規則-->interface-->數據轉換-->|client

2004-05-25 16:52:49 煙灰缸(2282902)
DEMO大約在明天下午5點左右傳給三位,大家測試後在後天早上返回信息給我,我再作修正。

2004-05-25 16:52:51 斜陽(249208513)
如果記錄有人在使用,你提交的時候會返回異常,並且提交失敗

2004-05-25 16:53:24 斜陽(249208513)
謝謝Jackey

2004-05-25 16:53:29 煙灰缸(2282902)
請三位明天下午5點在線

2004-05-25 16:54:05 Jackey(15677613)
但是最新的理解:
對于有些情況. 會有事務直接與data server打交道?
 
2004-05-25 16:54:10 煙灰缸(2282902)
如果成功的話,後天下午開課討論就比較好講了。。。

2004-05-25 16:55:12 斜陽(249208513)
其中 數據轉換(事務) 在服務端可客戶端都有嗎?

2004-05-25 16:55:29 煙灰缸(2282902)
是。

2004-05-25 16:55:41 dana(81828019)
如果是有人在使用,A去更新,B在使用,應該不會異常吧,因為B已經是下載在客戶使用的。
除非,A把記錄刪了,B再提交才會異常吧。

2004-05-25 16:55:54 煙灰缸(2282902)
是。

2004-05-25 16:56:15 天之痕_若虹(86278566)
那如何避免呢

2004-05-25 16:56:17 煙灰缸(2282902)
也可以不異常。

2004-05-25 16:56:24 楓長舞(273966879)
在三層中判斷是否有人使用記錄是很難的事吧

2004-05-25 16:56:34 斜陽(249208513)
那應該不能算是有人在使用,只能說有人用過

2004-05-25 16:56:35 煙灰缸(2282902)
是比較難。

2004-05-25 16:56:45 llyygg(13029886)
煙灰缸:DevExpress在DelphiBox上有很多,下那一個?,要全部下嗎?

2004-05-25 16:56:53 煙灰缸(2282902)
我看看。

2004-05-25 16:57:21 斜陽(249208513)
如果這個人只是讀,那不影響什麼,如果這個人在更新數據,那一定會有異常

2004-05-25 16:57:58 鬆鼠(64652023)
如果是同時更新呢,會是出現什麼異常?

2004-05-25 16:58:12 煙灰缸(2282902)
ExpressQuantumGrid v4.5.2 Suite
ExpressQuantumTreeList 4 Suite
這兩個就可以了。因為以後有用。

2004-05-25 16:58:15 Jackey(15677613)
應是這樣。你取得了記錄。 修改。別人再取得記錄。修改。 你存儲。 別人再存,會出錯。因為dsp根據delta來更新。 先在server中找delta中原來的數據,你更新後,別人的update時他的delta還是原值。就會找不到。

2004-05-25 16:58:22 斜陽(249208513)
像你說的A先訪問了,然後B再訪問(讀訪問),如果A更新了,則B更新的時候會有異常

2004-05-25 16:58:23 llyygg(13029886)
好的,謝謝.

2004-05-25 16:58:26 楓長舞(273966879)
異常我為認大多數情況下是記錄找不到。

2004-05-25 16:58:47 煙灰缸(2282902)
請大家都先下載上面那兩個。

2004-05-25 16:59:22 楓長舞(273966879)
有事務處理,怎麼會允許兩個用戶同事存存一條記錄呢?

2004-05-25 16:59:52 斜陽(249208513)
還有,如果你使用Delphi自己的更新過程,並且是按照主鍵更新的,應該就不會有異常了(除非有人改主鍵N),最後一次更新應該就是最後的結果

2004-05-25 17:00:05 煙灰缸(2282902)
用事務處理,應該不會出現這個現象。

2004-05-25 17:00:43 楓長舞(273966879)
如果用三層,數據庫還是DBF的,那也太。。。

2004-05-25 17:00:51 斜陽(249208513)
事務處理應該是前提

2004-05-25 17:00:58 楓長舞(273966879)
至少也應是SQL

2004-05-25 17:01:04 天之痕_若虹(86278566)
用sql 2000的就行了吧,

2004-05-25 17:01:27 Jackey(15677613)
273966879(楓長舞) 17:00:43
如果用三層,數據庫還是DBF的,那也太。。v

2004-05-25 17:01:51 斜陽(249208513)
沒辦法啊,客戶沒有錢啊N

2004-05-25 17:01:52 楓長舞(273966879)
SQL可能有死鎖情況,我遇到過的。

2004-05-25 17:02:01 鬆鼠(64652023)
是啊,呵呵,事務處理應該不會記錄同時更新

2004-05-25 17:02:47 鬆鼠(64652023)
楓長舞:sql死鎖怎麼說?

2004-05-25 17:03:18 Jackey(15677613)
sql的block比較多,死鎖應該很少.

2004-05-25 17:03:35 斜陽(249208513)
作為三層的系統,同數據庫的交互應該是瞬間的,如果你常時間開著事務,那你的系統作的應該就有問題了

2004-05-25 17:03:43 Jackey(15677613)
block時間長了,會誤認為死了

2004-05-25 17:04:02 Jackey(15677613)
作為三層的系統,同數據庫的交互應該是瞬間的,如果你常時間開著事務,那你的系統作的應該就有問題了
----
yes

2004-05-25 17:04:04 楓長舞(273966879)
我在SQL的日志中發現的,一個用戶進行表操作,不知為何不動了,另一個用戶也要操作表,所以兩個都不動了。s

2004-05-25 17:04:21 Jackey(15677613)
查block.

2004-05-25 17:04:40 楓長舞(273966879)
重啟SQL後就沒事了。

2004-05-25 17:04:57 斜陽(249208513)
有些數據庫可以只鎖一條記錄而不是一個表

2004-05-25 17:05:01 Jackey(15677613)
kill sid

2004-05-25 17:06:13 斜陽(249208513)
聽說還有只鎖一條記錄的指定字段的,不過我沒用過

2004-05-25 17:06:20 楓長舞(273966879)
SQL連機叢書:
檢測和結束死鎖
識別死鎖後,SQL Server 選擇特定的線程作為死鎖犧牲品,並返回一條列出死鎖中涉及的資源的錯誤信息

2004-05-25 17:06:52 斜陽(249208513)
哪個類型的線程會當砲灰啊?

2004-05-25 17:06:58 楓長舞(273966879)
SQL可以自行解鎖?

2004-05-25 17:07:12 楓長舞(273966879)
希望不是我的。

2004-05-25 17:07:22 Jackey(15677613)
40多分種解死

2004-05-25 17:07:35 Jackey(15677613)
我經驗。

2004-05-25 17:08:04 楓長舞(273966879)
SQL Server 通常只執行定期死鎖檢測,而不使用急切模式。因為系統中遇到的死鎖數通常很少,定期死鎖檢測有助于減少系統中死鎖檢測的開銷。

當鎖監視器對特定線程啟動死鎖檢測時,它識別線程正在等待的資源。然後,鎖監視器查找特定資源的擁有者,並遞歸地繼續執行對那些線程的死鎖搜索,直到找到一個循環。用這種方式識別的循環形成一個死鎖。

在識別死鎖後,SQL Server 通過自動選擇可以打破死鎖的線程(死鎖犧牲品)來結束死鎖。SQL Server 回滾作為死鎖犧牲品的事務,通知線程的應用程序(通過返回 1205 號錯誤信息),取消線程的當前請求,然後允許不間斷線程的事務繼續進行。

SQL Server 通常選擇運行撤消時花費最少的事務的線程作為死鎖犧牲品。另外,用戶可以使用 SET 語句將會話的 DEADLOCK_PRIORITY 設置為 LOW。DEADLOCK_PRIORI

2004-05-25 17:09:09 斜陽(249208513)
謝謝

2004-05-25 17:09:31 鬆鼠(64652023)
delphi有沒有內嵌事務,也就是說我們沒有寫begintrans、comittrans等,delphi在提交數據時會自動自己生成事務嗎?

2004-05-25 17:09:43 楓長舞(273966879)
少一行,
DEADLOCK_PRIORITY 選項控制在死鎖情況下如何衡量會話的重要性。如果會話的設置為 LOW ,則當會話陷入死鎖情況時將成為首選犧牲品。

2004-05-25 17:09:47 斜陽(249208513)
是的

2004-05-25 17:10:32 斜陽(249208513)
噢,那我以後可要注意了,別讓關鍵的提交當砲灰了

2004-05-25 17:10:53 楓長舞(273966879)
TDataBase控件有事務功能啊。

2004-05-25 17:11:26 楓長舞(273966879)
TADOConnection也有啊

2004-05-25 17:11:54 鬆鼠(64652023)
那它的事務級別高嗎

2004-05-25 17:12:24 楓長舞(273966879)
與你的設置有關。

2004-05-25 17:12:53 鬆鼠(64652023)
如果TADOConnection,在哪裡設置?

2004-05-25 17:14:22 煙灰缸(2282902)
要一個調查,大家聊一聊如何?

2004-05-25 17:15:24 斜陽(249208513)
調查都是給回扣的噢N

2004-05-25 17:15:30 煙灰缸(2282902)
大家的年齡是多少,我:27。

2004-05-25 17:15:40 llyygg(13029886)
25

2004-05-25 17:15:52 斜陽(249208513)
28

2004-05-25 17:15:58 鬆鼠(64652023)
26

2004-05-25 17:15:59 銀狼(43225570)
25

2004-05-25 17:16:25 煙灰缸(2282902)
Jackey呢?

2004-05-25 17:16:53 煙灰缸(2282902)
30之後,大家還做程序員嗎?

2004-05-25 17:17:11 鬆鼠(64652023)
楓長舞:
就剛才那個問題,如果是TADOConnection控件,在哪裡設置?

2004-05-25 17:17:58 楓長舞(273966879)
沒找到

2004-05-25 17:18:04 斜陽(249208513)
這個問題我離的比較近噢。
不過我認識的人中,有一個很牛的,現在40多了,依然寫程序,當然也搞設計和規劃

2004-05-25 17:19:32 煙灰缸(2282902)
呵呵,看來都差不多在這段年齡。。。。。

2004-05-25 17:20:25 楓長舞(273966879)
function TDCOMCF.EXECSQL(sqltext: OleVariant): OleVariant;
begin
{執行無返回信息的SQL語句}
Result:='';
ExeSql.Close;
ADoc.BeginTrans;
try
  ExeSql.SQL.Text:=fgfe(sqltext);
  main.incquery('數據處理:'+ExeSql.SQL.Text,user_id);
  ExeSql.SQL.Add('select 0');
  ExeSql.Open;//如果要捕獲處理中的錯誤,就不能用ExecSql方法.
  if ADoc.Errors.Count>0 then
     begin
       Result:='系統在申請數據處理時發生了一個錯誤,但錯誤信息沒有被捕獲。系統的部分請求可能沒有被處理';
       main.incquery('數據處理:'+Result,user_id);
     end;
  ADoc.CommitTrans;
except
  on E: Exception do
     begin
       Result:=E.Message;
       ADoc.RollbackTrans;
       main.incquery('數據處理失敗:'+Result,user_id);
     end;
end;
end;

2004-05-25 17:21:17 楓長舞(273966879)
這是我做的ADO的用事務處理的一個過程

2004-05-25 17:20:47 幽燕遊俠(1142610)
我是78的

2004-05-25 17:20:56 煙灰缸(2282902)
呵,也是同年。 

2004-05-25 17:21:44 斜陽(249208513)
我招聘過好多25歲以下的,簡歷寫的讓我自愧不如,但是幾個回合下來好像還是我坐的最穩當。N不知道這是一個什麼現象

2004-05-25 17:22:41 斜陽(249208513)
我十分希望找到一些年輕有為的人來充實開發隊伍,但是好難啊

2004-05-25 17:22:45 煙灰缸(2282902)
天之痕_若虹是24?

2004-05-25 17:22:53 天之痕_若虹(86278566)
是的

2004-05-25 17:23:27 楓長舞(273966879)
老了點就沒人要了嗎?

2004-05-25 17:23:58 煙灰缸(2282902)
呵呵,不是,是想探計一下,大家的年齡和30歲之後的想法。

2004-05-25 17:24:44 煙灰缸(2282902)
我本身也想走,可以老板一直不肯讓我走。

2004-05-25 17:24:47 天之痕_若虹(86278566)
呵呵,俺的想法是30後不用自已再寫程序

2004-05-25 17:24:56 dana(81828019)
呵呵,大家是不是跑題了M

2004-05-25 17:25:43 煙灰缸(2282902)
是跑題了,不過快下班了,所以聊點以後的方向。

2004-05-25 17:26:03 天之痕_若虹(86278566)
呵呵。。。。

2004-05-25 17:26:30 煙灰缸(2282902)
不過,我覺得還是學點其它的,吃不了程序還可以吃其它的。

2004-05-25 17:26:48 斜陽(249208513)
我覺得寫程序很有意思,我只想作我喜歡作的事情,如果我30以後依然對寫代碼情有獨鐘,那為什麼不去寫呢

2004-05-25 17:26:53 李逸(57440981)
我30了,大家給我來寫程序吧

2004-05-25 17:27:17 煙灰缸(2282902)
老狼,我幫你寫要麼?N

2004-05-25 17:27:22 楓長舞(273966879)
誰年齡最大?

2004-05-25 17:27:38 dana(81828019)
剛上看了都差不多了,都是20多。

2004-05-25 17:27:40 李逸(57440981)
這個嗎

2004-05-25 17:27:47 李逸(57440981)
還沒有想好呢

2004-05-25 17:28:03 煙灰缸(2282902)
不是20多,而是快30了。。。。。。

2004-05-25 17:28:22 煙灰缸(2282902)
老狼?

2004-05-25 17:28:30 天之痕_若虹(86278566)
西西。。。我們這些後來人可以好好向你們學習才是呢

2004-05-25 17:28:38 李逸(57440981)
怎麼了Aleyn對我亮刀子了

2004-05-25 17:29:01 dana(81828019)
沒事,心理年齡年青就行。

2004-05-25 17:30:45 煙灰缸(2282902)
快30了,還好我喜歡單片機,所以決定再學一門單片機,和DELPHI結合。

2004-05-25 17:31:49 鬆鼠(64652023)
煙灰缸:
單片機delphi好做嗎?應該用c或者匯編吧

2004-05-25 17:32:00 煙灰缸(2282902)
用匯騙。

2004-05-25 17:32:02 幽燕遊俠(1142610)
單片機 是有前途的 
底層硬件的嵌入式開發很火的

2004-05-25 17:32:03 斜陽(249208513)
最後打的槍都燙手了

2004-05-25 17:32:25 煙灰缸(2282902)
和平台無關。

2004-05-25 17:32:27 斜陽(249208513)
怎麼都有這個想法啊,我正研究匯編呢

2004-05-25 17:32:44 楓長舞(273966879)
以前我用DELPHI做過冷庫測溫的程序。感覺挺容易的。

2004-05-25 17:33:01 煙灰缸(2282902)
講完三層後,我們來學學軟硬結合如何?

2004-05-25 17:33:13 斜陽(249208513)
好啊好啊

2004-05-25 17:33:22 楓長舞(273966879)
現在會匯編的人不多了。

2004-05-25 17:33:25 llyygg(13029886)
好啊,沒有接觸過,正好學習.

2004-05-25 17:33:38 鬆鼠(64652023)
好啊,我也喜歡單片機的

2004-05-25 17:33:43 煙灰缸(2282902)
還有誰對單片機和Delphi有興趣?

2004-05-25 17:33:53 李逸(57440981)
Aleyn出多錢你願意過來呢

2004-05-25 17:33:56 斜陽(249208513)
我越研究匯編越覺得有意思,找回以前在Dos下為所欲為的感覺了

2004-05-25 17:34:19 鬆鼠(64652023)
不過匯編都忘了 5555~~~

2004-05-25 17:34:32 煙灰缸(2282902)
老狼,你是不是又想用色誘了。。。。。。。。。。。。?

2004-05-25 17:34:45 李逸(57440981)
是不是是什麼話啊

2004-05-25 17:35:11 李逸(57440981)
今天幾乎和那個MM談妥到西安了,目的就是將Aleyn吸引過來,呵呵

2004-05-25 17:35:19 鬆鼠(64652023)
C還可以,不知道單片機C用得多不多?

2004-05-25 17:35:20 煙灰缸(2282902)
我怕中了美人計,回不了廣東了。。。。。。。。。。。。

2004-05-25 17:35:24 斜陽(249208513)
不過32位匯編和16位匯編還是有點差別的

2004-05-25 17:35:26 李逸(57440981)
不會的

2004-05-25 17:36:14 煙灰缸(2282902)
基本上,我做完手上的Project後,就開始做單片機了。

2004-05-25 17:36:20 斜陽(249208513)
C作硬件應該是夠了,不過如果你想提高你的功力,對匯編也不要放棄

2004-05-25 17:36:31 楓長舞(273966879)
C我不想學了。D還沒精呢。

2004-05-25 17:36:40 幽燕遊俠(1142610)
C -- 做嵌入式開發

2004-05-25 17:36:53 幽燕遊俠(1142610)
華為

2004-05-25 17:37:11 煙灰缸(2282902)
其實單片機用C還是ASM是看情況的。

2004-05-25 17:37:24 鬆鼠(64652023)
c和匯編早就學過了,不過匯編忘得光光了,c還行

2004-05-25 17:37:37 煙灰缸(2282902)
我現在是用ASM,但不好管理。

2004-05-25 17:38:03 煙灰缸(2282902)
程序大了就不知到哪兒打哪兒了。。。。。。。。

2004-05-25 17:48:58 煙灰缸(2282902)
呵呵,我也下班了,大家後天見,

2004-05-25 17:49:06 斜陽(249208513)
那天看了個文章,鍵盤的輻射是顯示器的5倍

2004-05-25 17:49:09 煙灰缸(2282902)
還有,三位記得明天TEST

2004-05-25 17:49:10 楓長舞(273966879)
不聊了,我還有事。?

2004-05-25 17:49:24 鬆鼠(64652023)
是後天啦

2004-05-25 17:50:00 煙灰缸(2282902)
後天見...........................................................................................................?

2004-05-25 17:50:13 斜陽(249208513)
以後大家離鍵盤遠點噢,尤其是喜歡把鍵盤放在腿上的男士M

2004-05-25 17:50:25 斜陽(249208513)
小心輻射N

2004-05-25 17:51:11 dana(81828019)
以後穿上隔離服吧,這樣否則不會輻射.

2004-05-25 17:51:42 Jackey(15677613)
帶??上班....

2004-05-25 17:51:49 斜陽(249208513)
要是女士啊,不要趴在鍵盤上找鍵位啊,小心臉上長豆豆

2004-05-25 17:52:43 Jackey(15677613)
程序員必備的東東又多了一個. 真與*女有得一比....N

2004-05-25 17:53:37 斜陽(249208513)
大家不妨照照鏡子,肯定多數人現在眼袋黑黑的像大熊貓似的,唉,程序員啊

转载于:https://www.cnblogs.com/DKSoft/articles/41456.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值