SQL Server interpreter sample
I was writing some code to test Microsoft SQL Server: SQL Server 2005 Express Edition (which I believe you can download for free)
It connects to SQL Express (It’s simple change to use SQL Server 2005), creates a database called Test, creates a table called Cust, adds some records, removes the Test database, so all is cleaned up.
It creates a text string of lines that are executed sequentially. If the line starts with a “!”, then it’s executed by VFP locally.
Note that it also uses the new XML data type.
SQLDISCONNECT(0) && close All connections
cstr="driver=sql server;server=(local)\sqlexpress"
*cstr="driver=sql server;server=calvinh6"
nh=SQLSTRINGCONNECT(cstr)
?"Handle =",nh
IF nh<0
?AERROR(aa)
LIST MEMORY LIKE aa
RETURN
ENDIF
IF SqlDoIt(nh,"use test")<0 && If we can't use the test database (alt: use sp_helpdb)
SqlDoIt(nh,"Create database test")
SqlDoIt(nh,"use test")
ENDIF
SET TEXTMERGE ON TO memvar myvar NOSHOW && put the following text into a variable called myvar
SQLTABLES(nh) && get a table of tables
SELECT * FROM sqlresult WHERE table_type="TABLE" AND table_name = "cust" INTO CURSOR foo
IF _tally>0
\DROP TABLE cust
ENDIF
\CREATE TABLE cust (name char(10),amount tinyint,tstamp datetime,myxml xml)
FOR i = 1 TO 10
\INSERT INTO cust (name,amount,tstamp,myxml) VALUES ('test<<TRANSFORM(i)>>',
\\<<TRANSFORM(i)>>,'<<DATETIME()-i*86400>>',
\\'<MyTag MyAttr="val<<i>>">Mydata</MyTag>')
ENDFOR
\select * from cust
\!list off name,amount,tstamp,myxml
*!* \sp_tables
* \!brow last
*use master database, so test is not used anymore
\use master
\drop database test
\sp_helpdb
\!list PADR(name,20),db_size
SET TEXTMERGE to
n=ALINES(aa,myvar) && put the lines into an array
FOR i = 1 TO n && for each line
?i,aa[i]
IF SqlDoIt(nh,aa[i])<0 && Execute it
?AERROR(aErrs)
LIST MEMORY LIKE aErrs
EXIT
ENDIF
ENDFOR
SQLDISCONNECT(0) && close All connections
RETURN
PROCEDURE SqlDoIt(nH as Integer, cCmd as String)
nRetval=0
IF LEFT(cCmd,1)='!' && use "!" for Fox commands
cCmd=SUBSTR(cCmd,2)
&cCmd && execute the command
ELSE
nRetval= SQLEXEC(nH,cCmd)
ENDIF
RETURN nRetval
Comments
Anonymous
May 19, 2006
I met with some customers today from one company. They took time from their busy schedule to travel to...Anonymous
May 06, 2007
http://tnij.org/camerass <a href="http://tnij.org/camerass">camera</a> [url=http://tnij.org/camerass/]digital camera[/url]Anonymous
October 08, 2007
PingBack from http://foxpro.ntsl119.com/scr/archives/593Anonymous
June 01, 2009
PingBack from http://paidsurveyshub.info/story.php?id=77228