初学者求解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
这几天看帖子的时候、遇见了一个名词、事务处理、
也看了网上的相关资料。
但是好像还不是很明白。
我现在用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