Subject |
Re: Http: Response into my local software |
From |
Michael <michael@abstrcatservices.com.au> |
Date |
Sun, 17 Sep 2017 23:17:28 -0400 |
Newsgroups |
dbase.getting-started |
Thanks Mervyn.
I am using Dbase 11.3.0 and I am still finding a few funny things going on. I will give it another shot and lets see if i can get it working smoothly. One question, i see what your've entered for the connection string and driver but if I want to talk to the server on the web, what would I need to use as a connection string? Ip address? can you give me an example.
Thanks again,
Michael.
Mervyn Bick Wrote:
> On 2017-09-17 9:54 AM, Michael wrote:
> > Hi Guys,
> >
> > I have been looking for an easy way to send and retrieve data from a hosted server mysql table and process locally. I have been studying running an Mysql database but I see too many steps and parameters to make it functional for my software.
> >
> > Recently I discovered the OLEautoclient(ADODB.stream) used by google to retrieve images through dbase.
> >
> > // Google API Call -- don't change this address:
> > cURL = "https://chart.googleapis.com/chart" // POST do not use ?
> > // max size is 520?
> > cPar = "chs="+nSize+"x"+nSize+"&cht=qr&chl=" + cStr // image format 520x520
> > objHttp = new OleAutoClient("Msxml2.XMLHTTP")
> > objHttp.open("POST",cURL,false)
> > objHttp.setRequestHeader("Content-Type", "application/x-www- form-urlencoded")
> > objHttp.send(cPar)
> > if not empty(objHttp.responseText)
> > objStream = new OleAutoClient("ADODB.Stream")
> > objStream.Open()
> > objStream.Type = 1 // adTypeBinary
> > objStream.Write(objHttp.responseBody)
> > objStream.SaveToFile(cImg,2) //adSaveCreateOverWrite = 2
> > objStream.Close()
> > else
> > *? "Login Failed! " + datetime()+cImg
> > endif
> >
> > I already have a database driven website and scripts in php for a portal I have set up for my clients. I just want to update and recieve some data when I run my local software.
> >
> > I can pass parameters up to the server, so have no problems to run php pages that can create and insert records. The problem I have is how can I retrieve data from an executed script/webpage back down that I can read from my software. I can read the physical page but not the executed result.
> >
> > Does anyone know how I can receive the results?
> >
> > The ADODB.Stream is great for receiving graphical binary data but what commands and or does anyone have any source to show how I can receive the results of my executed sql query on the web.
> >
> > Please help!
>
> It depends on which version of dBASE you are using but since dBASE Plus
> 8 access to SQL servers via ADO using ODBC has been possible.
> Initially the ADO components were "buggy" but they have improved such
> that in dBASE 11.3.1 they are very useable.
>
> It goes without saying that you should only experiment on copies of your
> production tables until you are sure everything is working properly.
>
> You will need to download and install the ODBC driver for MySql. If you
> are using a 64-bit version of Windows you apparently need both the
> 64-bit and 32bit ODBC drivers installed.
>
> If you are using a dBASE version earlier than dBASE Plus 8 you can
> access MySQL via the BDE but in that case you will need an earlier
> version (3.51 instead of 5.3) of the ODBC driver
>
>
> I use Firebird as a SQL server and this allows me to set up a read-only
> connection for fetching data and a writeable connection for inserting or
> updating data.
>
>
> A snippet from one of my ADO forms is
>
> this.ADODATABASE2 = new ADODATABASE(this)
> with (this.ADODATABASE2)
> left = 40.0
> connectionString = "DRIVER=Firebird/InterBase(r)
> driver;DBNAME=d:\firebird_databases\dBASE_Examples.fdb;DIALECT=3"
> loginString = "mervyn/******"
> active = true
> endwith
>
> this.ADODATABASE1 = new ADODATABASE(this)
> with (this.ADODATABASE1)
> left = 2.0
> connectionString = "DRIVER=Firebird/InterBase(r)
> driver;DBNAME=d:\firebird_databases\dBASE_Examples.fdb;DIALECT=3READONLY
> =true"
> loginString = "mervyn/******"
> active = true
> endwith
>
> this.ADOQUERY1 = new ADOQUERY(this)
> with (this.ADOQUERY1)
> left = 25.0
> database = form.adodatabase1
> connected = true
> sql = "select firstname||', '||lastname as comp_name,iif(salary
> = 0,'n','x ') as xx from mbemployees m order by upper(lastname) desc"
> maxRows = 4 //inserted by dBASE but apparently ignored
> requestLive = false
> active = true
> endwith
>
>
>
> MySQL doesn't provide for read-only and writeable connections for the
> same user so you will only need one ADOdatabase object.
>
> The connection string for MySQL is
>
> Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
>
> As this contains the username and password you won't need to populate
> the loginString for the ADOdatabase object.
>
> To examine data you can use a grid with it's dataLink property set to
> the ADOquery's rowset.
>
> To Insert or Update build the Insert or Update statement into a variable
> and use the ADOdatabase object's executeSQL() method to implement it.
>
>
> cmd = "insert into tablename (fieldlist) values (valuelist)"
> form.ADOdatabase1.executeSQL(cmd)
>
>
> cmd = "update tablename set field1 = 34,field2 = 'whatever' where
> primary_key_field = 12"
> form.ADOdatabase1.executeSQL(cmd)
>
> Mervyn
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|