初学者求解VFP 和SQL 的事务处理 ,最好有实例(VFP 项目)

菜鸟求解VFP 和SQL 的事务处理 ,最好有实例(VFP 项目)
这几天看帖子的时候、遇见了一个名词、事务处理、
也看了网上的相关资料。
但是好像还不是很明白。
我现在用vfp 和sql 做了个程序,用的是 SQLEXEC(NAHNDLE,"")

什么时候用事务处理啊
我感觉现在的程序多人读写的时候,好像有很大漏洞。

大侠有好的项目、发我信箱吧

songlinux@qq.com
------解决方案--------------------
<VFP 客户/服务器应用程序中的事务处理>
http://blog.csdn.net/apple_8180/article/details/1229946
------解决方案--------------------
PUBLIC oMyObject
oMyObject = CREATEOBJECT("frmImage")
oMyObject.SHOW

DEFINE CLASS frmImage as Form 
caption="SQL Server中 Image字段处理示例"
nHand=0
autocenter=.t.


ADD OBJECT command1 as commandbutton with;
top =7,;
left=10,;
height=25,;
width=84,;
caption="生成SQL数据表",;
name="btnCreateTable"

  ADD OBJECT command2 AS commandbutton WITH ;
Top = 7, ;
Left = 100, ;
Height = 25, ;
Width = 84, ;
Caption = "上传文件", ;
Name = "btnUp"


ADD OBJECT command3 AS commandbutton WITH ;
Top = 7, ;
Left = 200, ;
Height = 25, ;
Width = 84, ;
Caption = "下载文件", ;
Name = "btnDown"

PROCEDURE init 
SET SAFETY OFF 
this.nHand=SQLSTRINGCONNECT("Driver={SQL Server};Server=(local);Database=test;Uid=sa;pwd=123")
ENDPROC
PROCEDURE unload
SQLDISCONNECT(this.nHand)
this.nHand=0
ENDPROC 

PROCEDURE CreateTable
LOCAL cSql
TEXT TO csql NOSHOW TEXTMERGE 
IF NOT exists(select * from sysobjects where name='myImage')
CREATE TABLE myImage(
fileStream image null,
id int IDENTITY(1,1) not null,
primary key (id) 
)
ENDTEXT 
IF !thisform.execsql(cSql)
MESSAGEBOX("生成数据表失败",0+64,"系统提示")
ELSE
MESSAGEBOX("成功创建表myImage",0+64,"系统提示")
ENDIF 
ENDPROC 

FUNCTION execsql
LPARAMETERS cCommand
IF EMPTY(cCommand)
RETURN
ENDIF 
nResult=SQLEXEC(this.nHand,cCommand)
IF nResult<=0
RETURN .f.
ELSE
RETURN .t.
ENDIF 

ENDFUNC

PROCEDURE btnCreateTable.click
thisform.CreateTable()
ENDPROC 

PROCEDURE btnDown.click
thisform.downLoadFile
ENDPROC 
&&下载文件
PROCEDURE downLoadFile
LOCAL cSql
cSql="select top 1 fileStream  from myImage order by id desc"

=SQLEXEC(thisform.nhand,cSql,"tempcursor")
SELECT ("tempcursor")
cValue=FIELD(1)
cFieldStream=CAST(&cValue as W)
cFile=PUTFILE("文件另存为...")
IF EMPTY(cFile)
CANCEL
RETURN 
ENDIF
CREATE CURSOR t1(id int,filechar blob)
APPEND BLANK 
replace filechar WITH cFieldStream
COPY MEMO filechar  TO (cFile)
USE IN t1
ENDPROC 

PROCEDURE btnUp.click
thisform.Uploadfile
ENDPROC 
PROCEDURE Uploadfile
cFile=GETFILE()
cFileName=ALLTRIM(JUSTFNAME(cFile))
cfileValue=CAST(filetostr(cFile) as W)
cCommand="Insert into myImage (fileStream  ) values(?cfileValue)"
=SQLEXEC(this.nhand,cCommand)
ENDPROC 
endDEFINE