|
VFP ·R¥ÎªÌªÀ°Ï ¥»°Q½×°Ï¬° Visual Foxpro ·R¥ÎªÌ¸gÅç¥æ¬yªº¦a¤è, ½Ð¦h¦h§Q¥Î"·j´M"ªº¥\¯à, ¥ý¬d¬Ý¬Ý¦³µL«e¨Ò¥i´`, ¦pªGÁÙ¦³¤£À´ªº¦Aµo°Ý. ³¡¥÷¥DÃD¦³ªþ¥[ÀÉ®×, ¶·¥ýµù¥U¦¨¬°ªÀ°Ï©~¥Á¤~¥i¥H¤U¸ü.
|
¤W¤@½g¥DÃD :: ¤U¤@½g¥DÃD |
µoªí¤H |
¤º®e |
Ruey
µù¥U®É¶¡: 2003-03-12 ¤å³¹: 1698 ¨Ó¦Û: tunglo
²Ä 1 ¼Ó
|
µoªí©ó: ¬P´Á¤» ¤Q¤ë 11, 2003 12:57 pm ¤å³¹¥DÃD: CursorAdapter °_¨B 2 (Âà¶K) |
|
|
CursorAdapter °_¨B 2 [Âà©«]
CursorAdapter °_¨B ¤§ ¤G¡G¥Î CursorAdapter ¨Ó¨ú±o©M§ó·s¸ê®Æ
§@ªÌ¡GDung Hennig
ĶªÌ¡Gfbilo
¦b VFP8 ¤¤·s¼Wªº CursorAdapter °òÃþ´£¨Ñ¤@ӲΤ@¡B©ö¥Îªº¸ê®Æ¤¶±¡CDoug Hennig ¦b³oӤ몺¤å³¹¤¤ºt¥Ü¤F«ç¼Ë¨Ï¥Î CursorAdapter ¨Ó³X°Ý¥»¦a¸ê®Æ©M ODBC¡BADO©MXML³o¼Ëªº»·ºÝ¸ê®Æ¡X¡X°Q½×¤F¨Ï¥Î¦UºØ¸ê®Æ·½¬ÛÀ³ªº¯S®ín¨D©M¹ê²{³~®|¡C
¥¿¤å¡G
¦p§Ú¦b¤W¤@½g¤å³¹¤¤©Ò´£¨ìªº¨º¼Ë¡A¦bVFP8¤¤¤@ӳ̫nªº¡B¤]¬O³Ìºë±mªº·s¥\¯à¬O·sªº CursorAdapter °òÃþ¡C¦b¨º½g¤å³¹¤¤¡A§Ú̬ã¨s¤F¤@¤U CursorAdapter ªºÄÝ©Ê¡B¨Æ¥ó©M¤èªk¡A¨Ã°Q½×¤F¥¦¬Û¹ï¤_»·µ{µø¹Ï¡BSQL PassThrough(SPT)¡BADO©MXMLªºÀu¶Õ¡C
¦b¶}©l¨Ï¥Î CursorAdapter ¤§«e¡A§A»Ýn®Ú¾Ún³X°Ýªº¬O¥»¦a¸ê®ÆÁÙ¬O³q¹LODBC¡BADO©ÎªÌXMLªº»·ºÝ¸ê®Æ·½ªº¤£¦P¡Aª`·N³oÓÃþ©Ò¬ÛÀ³ªº¤£¦Pªº¯S®ín¨D¡C³oӤ몺¤å³¹´NÁ¿z¤F¨Ï¥Î¦UºØ¸ê®Æ·½ªº²Ó¸`¡C
¨Ï¥Î¥»¦a¸ê®Æ·½
¡Ñ¡Ñ¡Ñ¡Ñ¡Ñ¡Ñ¡Ñ
¾¨ºÞ§Ú̫ܲM·¡ CursorAdapter ¬O¸Õ¹Ï¥Î¨Ó¼Ð·Ç¤Æ©M²¤Æ¹ï«DVFP¸ê®Æªº³X°Ý¤è¦¡ªº¡A¤£¹L§AÁÙ¬O¥i¥H§â¥¦·í§@¬O Cursor ªº¥N´À«~¥Î¥¦¨Ó³X°ÝVFP¸ê®Æ¡G¥un§â¥¦ªº DataSourceType Äݩʳ]¸m¦¨ "Native"¡C¬°¤°»òn³o»ò°µ©O¡H¦]¬°§AªºÀ³¥Îµ{¦¡±N¨Ó¥i¯à·|»Ýn¤É¾E¡X¡X¨º®ÉÔ§A´N¥i¥H§â DataSourceType Äݩʳ]¸m¦¨¨ä¥L´Xӿﶵ¤§¤@¡]·íµM¥i¯àÁÙ»Ýnקï¨ä¥L´XÓÄÝ©Ê¡A¨Ò¦p³]¸m³s±µ¸ê°Tµ¥µ¥¡^¡A´N¯à»´ÃPªº¤Á´«¨ì¥t¤@ºØ¸ê®Æ®w¤ÞÀº¡A¨Ò¦pSQL Server¡C
·í DataSourceType Äݩʪº³]¸m¬° "Native" ªº®ÉÔ¡AVFP ·|©¿²¤¥¦ªº DataSource ÄÝ©Ê¡CSelectCmd ÄÝ©Ê¥²¶·¬O¤@Ó SQL Select »y¥y¡]¦Ó¤£¬O¤@Ó USE ©R¥O©Î¹Bºâ¦¡¡^¡A³o´N·N¨ýµÛ§A¥Î CursorAdapter ¤£¬Oª½±µ¾Þ§@¥»¦aªí¦Ó¬O¾Þ§@¤@ÓÃþ¦ü©ó¥»¦aµø¹Ï¨º¼ËªºªF¦è¡C§AÁÙ¥²¶·½T«OVFP¯à°÷§ä¨ì¥X²{¦b¨ºÓ Select »y¥y¤¤ªº¥ô¦óªí¡A¦]¦¹¡A¦pªG³o¨Çªí¤£¦b·í«e¸ô®|¤¤¡A¨º»ò§A´N»Ýn³]¸m¤@¤U¸ô®|©ÎªÌ¥´¶}³o¨Çªí©ÒÄݪº¸ê®Æ®w¡C¦¹¥~¡A´N¸ò¥Îµø¹Ï¤@¼Ë¡A¦pªG§A·QÅý³oÓ Cursor ¬O¥i§ó·sªº¡A§AÁÙ¥²¶·³]¸m¦n¨º¨Ç»P§ó·s¬ÛÃöªºÄÝ©Ê¡]KeyFieldList¡BTables¡BUpdatableFieldlist ©M UpdateNameList¡^¡C
¤U±ªº¨Ò¤l¡]¤å³¹ªþ¥ó NativeExample.prg¡^·|¥Î VFP ¥Ü¨Ò¸ê®Æ®w¤¤ªº Customer ªí«Ø¥ß¤@Ó¥i§ó·sªº Cursor¡G
local loCursor as CursorAdapter, laErrors[1]
Open database (_samples + 'data\testdata')
with loCursor
.Alias = 'customercursor'
.DataSourceType = 'Native'
.SelectCmd = "Select CUST_ID, COMPANY, CONTACT FROM CUSTOMER " + ;
"WHERE COUNTRY = 'Brazil'"
.KeyFieldList = 'CUST_ID'
.Tables = 'CUSTOMER'
.UpdatableFieldList = 'CUST_ID, COMPANY, CONTACT'
.UpdateNamelist = 'CUST_ID CUSTOMER.CUST_ID, '+ ;
'COMPANY CUSTOMER.COMPANY, CONTACT CUSTOMER.CONTACT'
if .CursorFill()
browse
tableupdate(1)
else
aerror(laErrors)
messagebox(laErrors[2])
endif .CursorFill()
endwith
close databases all
¨Ï¥Î ODBC
¡Ñ¡Ñ¡Ñ¡Ñ¡Ñ
ODBC ¬O DataSourceType ÄÝ©Ê¥|ºØ³]¸m¤¤³Ì²³æªº¤@ºØ¡C§â DataSource ³]¸m¬°¤@Ó¥´¶}¤Fªº ODBC ³s±µ±±¨î½X¡B³]¸m¤@¤U±`¥ÎªºÄÝ©Ê¡BµM«á½Õ¥Î CursorFill ¨Ó¨ú±o¸ê®Æ¡C¦pªG§A³]¦n¤F KeyFieldList¡BTables¡BUpdatableFieldList ©M UpdateNameList ÄÝ©Ê¡AVFP ·|¦Û°Ê§â§A¹ï¸ê®Æªº¥ô¦ó§ï°ÊÂà´«¦¨¬ÛÀ³ªº UPDATE¡BINSERT¡B©M DELETE »y¥y¨Ó§â§ï°Ê´£¥æ¨ì«á»O¸ê®Æ·½¡C¦pªG§A·Q¥Îªº¬O¤@Ó¦sÀx¹Lµ{¡A¨º»òn¬ÛÀ³ªº³]¸m *Cmd¡B*CmdDataSource ©M *CmdDataSourceType ÄÝ©Ê¡]* ¥Nªí ¡§Delete¡¨¡B¡§Insert¡¨©Î¡§Update¡¨¡^¡C
³oùجOªþ¥ó ODBCExample.prg ¤¤ªº¤@Ó¨Ò¤l¡A¥¦½Õ¥Î Sql Server ¦Û±aªº NorthWind ¸ê®Æ®w¤¤ªº CustOrderHist ¦sÀx¹Lµ{¨Ó¨ú±o¾P°âµ¹¬YӫȤ᪺³æ¦ì²£«~Á`¼Æ¡C
local lcConnString, loCursor as CursorAdapter, laErrors[1]
lcConnString = 'driver=SQL Server;server=(local);database=Northwind;uid=sa;pwd=;"+ ;
"trusted_connection=no'
** §â¤W±³s±µ¦r¦ê¤¤ªº±K½X§ï¦¨§AªºSQL Server µn¿ýªº±K½X
loCursor = createobject('CursorAdapter')
with loCursor
.Alias = 'Customerhistory'
.DataSourceType = 'ODBC'
.DataSource = SQLStringConnect(lcConnString)
.SelectCmd = "exec CustOrderhist 'ALFKI'"
if .CursorFill()
browse
else
aerror(laErrors)
messagebox(laErrors[2])
endif .CursorFill()
endwith
¨Ï¥Î ADO
¡Ñ¡Ñ¡Ñ¡Ñ
»P¨Ï¥Î ODBC ¬Û¤ñ¡A¨Ï¥Î ADO n¦h¤@¨Ç»Ýn¾Þ¤ßªº¨Æ±¡¡G
¡Ñ¡Ñ DataSource ¥²¶·³Q³]¸m¦¨¤@Ó ADO RecordSet¡A¦Ó¥B³oÓ RecordSet ªº ActiveConnection ÄÝ©Ê»Ýn³Q³]¸m¦¨¤@Ó¥´¶}¤Fªº ADO Connection ª«¥ó¡C
¡Ñ¡Ñ ¦pªG§A·Qn¨Ï¥Î¤@ӰѼƤƬd¸ß¡]»P¤U¸ü¥þ³¡¸ê®Æ¬Û¤ñ¡A³o¥i¯à¬O§ó±`¥Îªº¤è¦¡¡^¡A§A¥²¶·§â¤@Ó ADO Command ª«¥ó§@¬°²Ä¥|ӰѼƶǻ¼µ¹ CursorFill ¤èªk¡A¦Ó¥B³oÓ Command ª«¥óªº ActiveConnection ÄÝ©Ê»Ýn³Q³]¸m¦¨¤@Ó¥´¶}¤Fªº ADO Connection ª«¥ó¡CVFP ·|¬°§A·ÓÅU¦n¶ñ¥R Command ª«¥óªº°Ñ¼Æ¤Æ¶°¦Xªº¨Æ±¡¡]¥¦³q¹L¤ÀªR SelectCmd ¨Ó§ä¥X°Ñ¼Æ¡^¡A¤£¹L°Ñ¼Æ©Ò¥]§tªºÈ·íµMÁÙ¬O¥²¶·¦b¦³®Ä¨úȽd³ò¤ºªº¡C
¡Ñ¡Ñ ¦b¸ê®ÆÀô¹Ò¤¤¥u¦³¤@ӨϥΤF ADO ªº CursorAdapter ³o¼Ëªº±¡ªp¬O¤ñ¸û²³æªº¡G¦pªG»Ýnªº¸Ü¡A§A¥i¥H§â UseDEDataSource Äݩʳ]¸m¦¨ .T.¡AµM«á®Ú¾Ú§Aªº»Ýn§â¸ê®ÆÀô¹Òªº DataSource ©M DataSourceType Äݩʳ]¸m¦¨ CursorAdapter¡C¤£¹L¡A¦pªG¸ê®ÆÀô¹Ò¤¤¦³¦hÓ CursorAdapter ªº¸Ü¡A³oºØ¿ìªk´NµL®Ä¤F¡Cì¦]¬O DataEnvironment.DataSource ©Ò¤Þ¥Îªº ADO RecordSet ¥u¯à¥]§t¤@Ó CursorAdapter ªº¸ê®Æ¡F·í§A¬°²Ä¤GÓ CursorAdapter ½Õ¥Î CursorFill ¤èªkªº®ÉÔ¡A·|¥X²{ ¡§RecordSet is already open (RecordSet °O¿ý¶°¤w¸g¥´¶})¡¨ªº¿ù»~¡C©Ò¥H¡A¦pªG§Aªº¸ê®ÆÀô¹Ò¤¤¦³¶W¹L¤@Óªº CursorAdapter¡A§A¥²¶·n§â UseDEDataSource ³]¸m¦¨ .F.¡A¨Ã¦Û¦æºÞ²z¨CÓ CursorAdapter ªº DataSource ©M DataSourceType ÄÝ©Ê¡]©ÎªÌ§A¥i¥H¨Ï¥Î¤@Ó¯à°÷ºÞ²z³oºØ±¡ªpªº DataEnvironment ªº¤lÃþ¡^¡C
ªþ¥ó ADOExample.prg ¤¤ªº¥Ü¨Ò¥N½Xºt¥Ü¤F«ç¼ËɧU¤@Ó ADO Command ª«¥ó¨Ó¨ú±o¸ê®Æ¡C³oӥܨÒÁÙºt¥Ü¤F¨Ï¥Î VFP8 ¤¤·sªºµ²ºc¤Æ¿ù»~³B²zªº¥\¯à¡C¹ï ADO Connection ª«¥óªº Open ¤èªkªº½Õ¥Î³Q«Ê¸Ë¦b¤@Ó TRY...CATCH...ENDTRY »y¥y¤¤¡A¥H®·®»½Õ¥Î³oÓ¤èªk¥¢±Ñªº®ÉÔ±N·|¥X²{ªº COM ¿ù»~¡C
local loConn as ADODB.Connection, ;
loCommand as ADODB.Command, ;
loException as Exception, ;
loCursor as CursorAdapter, ;
lcCountry, ;
laErrors[1]
loConn = createobject('ADODB.Connection')
with loConn
.ConnectionString = 'provider=SQLOLEDB.1;data source=(local);' + ;
'initial catalog=Northwind;uid=sa;pwd=dhennig;trusted_connection=no'
&& §â¤W±³s±µ¦r¦ê¤¤ªº±K½X§ï¦¨§AªºSQL Server µn¿ýªº±K½X
try
.Open()
catch to loException
messagebox(loException.Message)
cancel
endtry
endwith
loCommand = createobject('ADODB.Command')
loCursor = createobject('CursorAdapter')
with loCursor
.Alias = 'Customers'
.DataSourceType = 'ADO'
.DataSource = createobject('ADODB.RecordSet')
.SelectCmd = 'select * from customers where country=?lcCountry'
lcCountry = 'Brazil'
.DataSource.ActiveConnection = loConn
loCommand.ActiveConnection = loConn
if .CursorFill(.F., .F., 0, loCommand)
browse
else
aerror(laErrors)
messagebox(laErrors[2])
endif .CursorFill(.F., .F., 0, loCommand)
endwith
¨Ï¥Î XML
¡Ñ¡Ñ¡Ñ¡Ñ
¥Î CursorAdapter ¨Ó¾Þ§@ XML »Ýn¤@¨Ç¯S®íªº³]¸m¡C¤U±¬O³o¨Ç°ÝÃD¡G
¡Ñ¡Ñ DataSource ÄݩʳQ©¿²¤¡F
¡Ñ¡Ñ CursorSchema ÄÝ©Ê¥²¶·³Q¶ñ¥R¦n¡X¡X§Y¨Ï§Aµ¹ CursorFill ¶Ç»¼ªº²Ä¤@ӰѼƬO .F. ¤]¤@¼Ë¡X¡X§_«h±N·|¥X¿ù¡C
¡Ñ¡Ñ SelectCmd ¥²¶·³Q³]¸m¦¨¤@Ó¹Bºâ¦¡¡A¨Ò¦p¤@ӥΤá¦Û©w¸q¨ç¼Æ¡]UDF¡^©ÎªÌª«¥ó¤èªk¦W¡A¸Ó¹Bºâ¦¡¯à°÷¬° Cursor ªð¦^ XML¡C
¡Ñ¡Ñ ¹ï Cursor ªº§ï°Ê·|³QÂà´«¦¨¤@Ó DiffGram,¥¦¬O¡§¥]§tµÛ³Q§ï°Ê¤FªºÄæ¦ì©ÎªÌ°O¿ý¡A¦b³Q§ï°Ê¤§«e¡B³Q§ï°Ê¤§«áªºÈ¡¨ªºXML¡A·í»Ýn§ó·sªº®ÉÔ¡A¥¦³Q©ñ¦b DiffGram Äݩʤ¤¡C
¡Ñ¡Ñ ¬°¤F§â¸ê®Æ§ó°Ê¦^¼g¨ì¸ê®Æ·½¤¤¥h¡AUpdateCmdDataSourceType ÄÝ©Ê¥²¶·³Q³]¸m¬°¡§XML¡¨¡A¨Ã¥B UpdateCmd ¥²¶·³Q³]¸m¦¨¤@Ó¯à°÷³B²z´£¥æ§ó·s¥ô°Èªº¹Bºâ¦¡¡]¶H«e±¤@¼Ë¡A³oÓ¹Bºâ¦¡¤]¬O¶H¤@Ó UDF ©ÎªÌª«¥óªº¤èªk¡^¡C§A¥i¯à·|»Ýn§â ¡§This.DiffGram¡¨¶Ç»¼µ¹¨ºÓ UDF¡A³o¼Ë¥¦´N¥i¥H§â§ó·s´£¥æµ¹«á»O¸ê®Æ·½¡C
³oÓ Cursor ©Ò¨Ï¥Îªº XML ì©lÀÉ®×¥i¯à¨Ó¦Û¦UºØ¤£¦Pªº¦a¤è¡C¨Ò¦p¡A§A¥i¥H½Õ¥Î³o¼Ë¤@ÓUDF¡G¥¦¯à¥Î CursorToXML()¨Ó§â¤@ÓVFP Cursor Âà´«¦¨ XML¡A¨Ãªð¦^µ²ªG¡G
use CUSTOMERS
cursortoxml('customers', 'lcXML', 1, 8, 0, '1')
Return lcXML
UDF ¥i¥H½Õ¥Î¤@Ó Web Service¡A³oÓ Web Service «hªð¦^¤@Ó XML µ²ªG¶°¡C³oùجO¤@Ó¨Ò¤l¡A§Ú«Ø¥ß¤F¤@Ó Web Service ¨Ãµù¥U¦b§Ú¦Û¤vªº¨t²Î¤W¡A ¦Ó´¼¼z·Pª¾«h¬°§Ú¥Í¦¨¤F¤U±ªº¥N½X¡]¨ãÅ骺²Ó¸`¨Ã¤£«n¡A¥¦¥u¬Oºt¥Ü¤F¤@Ó Web Service ªº¨Ò¤l¡^¡G
loWS = newobject("WSclient', home() + 'ffc\_webservices.vcx')
loWS.cWSName = 'dataserver web service'
loWS = loWS.SetupClient(' http://localhost/' + ;
'SQDataServer/dataserver.WSDL', 'dataserver', ;
'dataserverSoapPort')
lcXML = loWS.GetCustomers()
Return lcXML
¥¦¯à°÷¦b¤@Ó Web Server ¤W¨Ï¥Î SQLXML 3.0 ¥h°õ¦æ¤@Ó¦sÀx¦b¤@ӼȦsÀɮפ¤ªº SQL Server 2000 ¬d¸ß¡]nÁA¸ÑÃö©ó SQLXML §ó¦hªº¸ê°T¡A½Ð³X°Ý http://msdn.microsoft.com¨Ã¬d§ä SQLXML¡^¡C¤U±ªº¥N½X¨Ï¥Î¤@Ó MSXML2.XMLHTTP ª«¥ó³q¹L HTTP ±q Northwind ¸ê®Æ®wªº Customers ªí¨Ó¨ú±o©Ò¦³ªº°O¿ý¡Aµy«á§Ú̱N°µ§ó¶i¤@¨Bªº¸ÑÄÀ¡C
local loXML as MSXML2.XMLHTTP
loXML = createobject('MSXML2.XMLHTTP')
loXML.open('POST', ' http://localhost/northwind/' + ;
'template/getallcustomers.xml, .F.)
loXML.setRequestHeader('Content-type', 'text/xml')
loXML.send()
return loXML.responseText
³B²z§ó·sªº¨Æ±¡n§ó½ÆÂø¤@ÂI¡C¸ê®Æ·½¥²¶·©ÎªÌ¯à°÷±µ¨ü¨Ã³B²z¤@Ó DiffGram (¤ñ¦p SQL Server 2000 ªº±¡ªp)¡A©ÎªÌ§A¥²¶·¦Û¤v¥h§Ë²M·¡©Ò¦³ªº§ï°Ê¡B°õ¦æ¤@¨t¦Cªº SQL »y¥y¡]UPDATE¡BINSERT ©M DELETE¡^¥h´£¥æ§ó·s¡C
³oùجOӨϥΤF±a XML ¸ê®Æ·½ªº CursorAdapter ªº¨Ò¤l¡]XMLExample.prg¡^¡Cnª`·Nªº¬O¡GSelectCMD ©M UpdateCMD ³£¬On½Õ¥Î UDF ªº¡C¦b SelectCMD ªº±¡ªp¤¤¡Anªð¦^¸ê®Æªº«È¤á½s¸¹³Q¶Ç»¼µ¹¤@Ó¥s°µ GetNEWustomers ªº UDF¡A³oÓ§Ú̵y«á¦A´£¡C¦b UpdateCmd ªº±¡ªp¤¤¡AVFP §â DiffGram Äݩʶǻ¼µ¹ SendNWXML¡A³oÓ§Ṳ́]µy«á¦A´£¡C
local loCustomers as CursorAdapter, ;
laErrors[1]
loCustomers = createobject('CursorAdapter')
with loCustomers
.Alias = 'Customers'
.CursorSchema = 'CUSTOMERID C(5), COMPANYNAME C(40), ' + ;
'CONTACTNAME C(30), CONTACTTITLE C(30), ADDRESS C(60), ' + ;
'CITY C(15), REGION C(15), POSTALCODE C(10), COUNTRY C(15), ' + ;
'PHONE C(24), FAX C(24)'
.DataSourceType = 'XML'
.KeyFieldList = 'CUSTOMERID'
.SelectCmd = 'GetNWCustomers([ALFKI])'
.Tables = 'CUSTOMERS'
.UpdatableFieldList = 'CUSTOMERID, COMPANYNAME, CONTACTNAME, ' + ;
'CONTACTTITLE, ADDRESS, CITY, REGION, POSTALCODE, COUNTRY, PHONE, FAX'
.UpdateCmdDataSourceType = 'XML'
.UpdateCmd = 'SendNWXML(This.DiffGram)'
.UpdateNameList = 'CUSTOMERID CUSTOMERS.CUSTOMERID, ' + ;
'COMPANYNAME CUSTOMERS.COMPANYNAME, ' + ;
'CONTACTNAME CUSTOMERS.CONTACTNAME, ' + ;
'CONTACTTITLE CUSTOMERS.CONTACTTITLE, ' + ;
'ADDRESS CUSTOMERS.ADDRESS, ' + ;
'CITY CUSTOMERS.CITY, ' + ;
'REGION CUSTOMERS.REGION, ' + ;
'POSTALCODE CUSTOMERS.POSTALCODE, ' + ;
'COUNTRY CUSTOMERS.COUNTRY, ' + ;
'PHONE CUSTOMERS.PHONE, ' + ;
'FAX CUSTOMERS.FAX'
if .CursorFill(.T.)
browse
else
aerror(laErrors)
messagebox(laErrors[2])
endif .CursorFill(.T.)
endwith
³oùجO GetNWCustomers ªº¥N½X¡C¥¦¨Ï¥Î¤F¤@Ó MSXML2.XMLHTTP ª«¥ó¨Ó³X°Ý¤@Ó¦ì©ó¤@ÓWeb Server ¤Wªº¦W¥s CustomersByID.xml ªº SQL Server 2000 XML ½d¥»¡A¨Ãªð¦^µ²ªG¡CnÀò¨ú¸ê®Æªº Customer ID ³Q§@¬°¤@ӰѼƶǻ¼µ¹³o¬q¥N½X¡G
lparameters tcCustID
local loXML as MSXML2.XMLHTTP
loXML = createobject('MSXML2.XMLHTTP')
loXML.open('POST', " http://localhost/northwind/template/customersbyid.xml?";; + ;
"customerid=" + tcCustID, .F.)
loXML.setRequestHeader('Content-type', 'text/xml')
loXML.send()
return loXML.responseText
³o¬q¥N½XùؤޥΪº¦W¬° CustomersByID.XML ªº XML ½d¥»ªº¤º®e¦p¤U¡G
<root xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:header>
<sql:param name="customerid">
</sql:param>
</sql:header>
<sql:query client-side-xml="0">
SELECT *
FROM Customers
WHERE CustomerID = @customerid
FOR XML AUTO
</sql:query>
</root>
§â³oÓÀÉ©ñ¦b¥Î©ó Northwind ¸ê®Æ®wªº¤@ÓµêÀÀ¥Ø¿ý¤¤¡]°Ñ¨£¸É¥R¤åÀÉ¡m³]¸m SQL Server 2000 XML ³X°Ý¡n¥HÁA¸Ñ§ó¦hÃö©ó¬° SQL Server 2000 ³]¸m IIS ªº¤º®e¡B¥H¤Î³o½g¤å³¹©Ò»Ýnªº¯S®í²Ó¸`¡C¡^
SendNWXML ªº¤º®e¬Ý°_¨Ó»P GetNWCustomers Ãþ¦ü¡A°£¤F¥¦±µ¦¬ªº°Ñ¼Æ¬O¤@Ó DiffGram¡AµM«á¥¦§â³oÓ DiffGram ¸ü¤J¨ì¤@Ó MSXML2.DOMDocumnet ª«¥ó¤¤¡A¨Ã§â³oÓª«¥ó¶Ç»¼µ¹ Web Server¡A¸Ó Web Server ·|³q¹L SQLXML §â³oÓª«¥ó¶Ç»¼µ¹ SQL Server 2000 ¥h³B²z¡C
lparameters tcDiffGram
local loDOM as MSXML2.DOMDocument, ;
loXML as MSXML2.XMLHTTP
loDOM = createobject('MSXML2.DOMDocument')
loDOM.async = .F.
loDOM.loadXML(tcDiffGram)
loXML = createobject('MSXML2.XMLHTTP')
loXML.open('POST', ' http://localhost/northwind/', .F.)
loXML.setRequestHeader('Content-type', 'text/xml')
loXML.send(loDOM)
¹B¦æ XMLExample.prg ¨Ó¬Ý¬Ý¥¦¬O«ç»ò¤u§@ªº¡C§A±N·|¦b Browse µøµ¡¤¤¬Ý¨ì¤@¥x°O¿ý¡]«È¤á ALFKI¡^¡C¸ÕµÛ§ï°Ê´XÓÄæ¦ìªºÈ¡AµM«áÃö³¬³oÓµøµ¡¡A¦A¹B¦æ PRG ¤@¹M¡C§A·|¬Ý¨ì§Aªº§ï°Ê¤w¸g³Q¼g¤J¨ì«á»O¸ê®Æ·½¤¤¤F¡C
Á`µ²
¡Ñ¡Ñ
¾¨ºÞ CursorAdapter °òÃþ´£¨Ñ¤F¤@ºØ¹ï»·ºÝ¸ê®Æ·½ªº²Î¤@ªºµ²ºc¡A¦Ó¤£ºÞ§A¨Ï¥Îªº¬O ODBC¡BADOÁÙ¬OXML¡X¡X¦ý¬O¡A®Ú¾Ú§A¿ï¾Üªº¸ê®Æ³X°Ý¾÷¨îªº¤£¦P¡A¹ï CursorAdapter ªº³]¸m¤]¦³¤@¨Ç°Ï§O¡C³o¨Ç°Ï§O¨ú¨M©ó¸ê®Æ³X°Ý¾÷¨îªº¥»¨¡C
¤UÓ¤ë¡A§Ú±N³q¹L«Ø¥ß¤@¨Ç¥i«¥Îªº¸ê®ÆÃþ¡B¨Ã°Q½×«ç¼Ë¦b³øªí¤¤¨Ï¥Î CursorAdapter ¨Óµ²§ô³oÓ¨t¦Cªº±MÃD¡C
¸É¥R¤åÀÉ¡G
¡m³]¸m SQL Server 2000 XML ³X°Ý¡n
¬°¤F¯à°÷¦b¤@Ó¬yÄý¾¹©ÎªÌ¨ä¥L HTTP ¥Î¤áºÝ¥Î¤@Ó URL ¨Ó³X°Ý SQL Server 2000¡A§A»Ýn°µ¤@¨Ç¤u§@¡Cº¥ý¡A§A»Ýn±q MSDN ºô¯¸¡] http://msdn.microsoft.com¡X¡X¬d¸ß¤@¤U¡§SQLXML¡¨¡AµM«á¿ï¾Ü¤U¸ü¡^¥h¤U¸ü©M¦w¸Ë SQLXML 3.0¡C
±µµÛ¡A§A»Ýn³]¸m¤@Ó IIS µêÀÀ¥Ø¿ý¡C¨BÆJ¦p¤U¡G±q¶}©l¥\¯àªí|µ{¦¡|SQLXML 3.0Àɧ¨¤¤³æÀ»¡§Configure IIS Support(³]¸m IIS ¤ä´©)¡¨¡C®i¶}§Aªº¦øªA¾¹¸`ÂI¡A¿ï¾Ün¨Ï¥Îªº Web ¯¸ÂI¡AµM«á³æÀ»·Æ¹«¥kÁä¡A¿ï¾Ü ¡§·s«Ø|µêÀÀ¥Ø¿ý¡¨¡A¦b¥X²{ªº¹ï¸Ü¤è¶ôªº¡§±`³W¡¨¶¤¤¿é¤JµêÀÀ¥Ø¿ýªº¦WºÙ©M¥¦ªºª«²z¸ô®|¡C¦b³oùØ¡A§Ų́ϥΡ§Northwind¡¨§@¬°µêÀÀ¥Ø¿ý¦W¡B¡§NorthwindTemplates¡¨§@¬°ª«²z¸ô®|¡C¨Ï¥Î Windows ¸ê·½ºÞ²z¾¹¦b§Aªº¨t²Î¤Wªº¤°»ò¦a¤è«Ø¥ß³oÓª«²z¥Ø¿ý¡AµM«áµ¹¥¦«Ø¤@Ó¦W¬° ¡§Template¡¨ªº¤l¥Ø¿ý¡]µy«á§Ú̱N·|¥Î¨ì³oÓ¤l¥Ø¿ý¡^¡C§âªþ¥ó¤¤ªº¨âÓ½d¥»ÀÉ GetAllCustomers.xml ©M CustomersByID.xml «þ¨©¨ì³oÓ¤l¥Ø¿ý¤¤¡C
¦b¡§¦w¥þ¡¨¶¤¤¡A¿é¤J³X°Ý SQL Server ªº¬ÛÀ³ªº¸ê°T¡A¨Ò¦p¥Î¤á¦W©M±K½X©ÎªÌ§A·Q±Ä¥Îªº¯S©wªºÅçÃÒ¾÷¨î¡C¦b¡§¸ê®Æ·½¡¨¶¤W¡A¿ï¾Ü SQL Server¡A¦pªG»Ýnªº¸Ü¡AÁÙn¿ï¾Ün¨Ï¥Îªº¸ê®Æ®w¡C¦b³oùاÚÌ¿ï¾Ü Northwind ¸ê®Æ®w¡C¦b¡§³]¸m¡¨¶¤W¿ï¾Ü§Æ±æªº³]¸m¡A¦Ü¤Ön¿ï¤W¡§¤¹³\½d¥»¬d¸ß¡¨©M¡§¤¹³\ Post¡¨¡C
¦b¡§µêÀÀ¦WºÙ¡¨¶¤¤¡A±qÃþ«¬¤U©Ô¦¡¦C¥Ü¤è¶ô¤¤¿ï¾Ü¡§½d¥»¡¨¡A¨Ã¿é¤J¤@ÓµêÀÀ¦WºÙ¡]¦b³oùاŲ́ϥΡ§template¡¨¡^©Mª«²z¸ô®|¡]¥¦À³¸Ó¬OµêÀÀ¥Ø¿ýªº¤@Ó¤l¥Ø¿ý¡A¦b³oùØ´N¬O "Template"¤l¥Ø¿ý¡^¡A³o¬O¨Ï¥Î½d¥»ªº»Ýn¡C¦n¡A³æÀ»¡§½T©w¡¨¡C
²{¦b§ÚÌ´ú¸Õ¤@¤U¬O§_¨C¼ËªF¦è³£³]¸m¥¿½T¤F¡A§Ú̱N³q¹L¨Ï¥Î§A«þ¨©¨ì Template ¤l¥Ø¿ý¤¤¥h±o GetAllCustomers.xml¨Ó³X°Ý SQL Server¡C¥¦ªº¤º®e¦p¤U¡G
<root xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:query client-side-xml="0">
SELECT *
FROM Customers
FOR XML AUTO
</sql:query>
</root>
¬°¤F´ú¸Õªº¥Øªº¡A¥´¶}§Aªº¬yÄý¾¹¡A¨Ã¿é¤J³oÓURL: http://localhost/northwind/template/getallcustomers.xml¡A§A´N·|¦b¬yÄý¾¹¤¤¬Ý¨ìXML§Î¦¡ªº Northwind Customers ªíªº¤º®e¤F¡C
<root xmlns:sql='urns:schemas-micorsoft-com:xml-sql">
<Customers CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" ContactName = "Maria Anders"
ContactTitle="Sales Represendative"
Address="Obere Str. 57" City="Berlin" PostalCode="12209"
Country="Germany" Phone="030-0074321"
Fax="999-999-9999" />
²{¦b§A´N¤w¸g°µ¦n¹B¦æ³o½g¤å³¹ªº SQLXML ¥Ü¨Òªº·Ç³Æ¤F¡C
****************************************************** _________________ #############################
§Ö¼Ö¶ý«}¨t¦C©¯ºÖ¦v°t,³Ü¤Q¥þÂû´ö~ì¨Ó©¯ºÖ¨º»ò²³æ!!
¾Ç·|VFP¨Ï¥ÎªÌªÀ°Ïªº·j´M,Code¤~·|§ó¦³½ì~
############################# |
|
¦^³»ºÝ |
|
|
|
|
±z µLªk ¦b³oÓª©±µoªí¤å³¹ ±z µLªk ¦b³oÓª©±¦^ÂФ峹 ±z µLªk ¦b³oÓª©±½s¿è¤å³¹ ±z µLªk ¦b³oÓª©±§R°£¤å³¹ ±z µLªk ¦b³oÓª©±¶i¦æ§ë²¼ ±z µLªk ¦b³oÓª©±ªþ¥[ÀÉ®× ±z µLªk ¦b³oÓª©±¤U¸üÀÉ®×
|
Powered by phpBB © 2001, 2005 phpBB Group ¥¿Å餤¤å»y¨t¥Ñ phpbb-tw ºûÅ@»s§@
|