[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Gambas + ODBC + MSSQLS
[Thread Prev] | [Thread Next]
- Subject: Re: Gambas + ODBC + MSSQLS
- From: First Last <d4t4full@xxxxxxxxx>
- Date: Fri, 19 Apr 2024 21:46:07 -0300
- To: user@xxxxxxxxxxxxxxxxxxxxxx
On Fri, Apr 19, 2024 at 4:45 PM System64 Development <64xcode@xxxxxxxxx>
wrote:
> Hello.
> I am trying to connect to a mssql server database, which is hosted on a
> windows server, through ODBC.
> Try installing: unicodc, fretds, etc. I even installed a mirosoft driver
> but I can't connect to the database.
> The fact is that in gambas it seems the ODBC connector is linked to
> unixodbc so if I want to use gambas to extract data from that database
> I will have to use unixodbc I suppose.
> Has anyone done any of this? And a "recipe" of steps to follow to set
> everything up?
> Thanks.
> Martin.
>
Martin,
Hi, I contributed some code 9 years ago to Gambas' ODBC component (I'm not
the original author, though).
My intention was to be able to completely bypass most, if not all, the
INI-file-juggling needed by UnixODBC's driver manager.
With the help of Benoît himself, ODBC is possible in Gambas. It has one or
two hiccups, though, like SELECTs not returning row counts, but that is by
design in ODBC.
You should get at least UnixODBC, and FreeTDS (the low-level driver) to
connect to Microsoft SQL Server.
You must also use the odbcinst tool to install (register) the necessary
database driver to ODBC's driver manager, or... edit the INI by hand (the
only INI to edit, IIRC).
On Gambas, the Connection object can be told to use a ConnectionString
instead of the DSN stored in UnixODBC's various INIs. This mimics Windows'
VB6, .Net, etc, although the connstring is obviously different.
To do so:
Dim conn As Connection
Inc Application.Busy ' This gives the hourglass/busy pointer
conn = New Connection
conn.Timeout = 5 ' Never remember if this is seconds or milliseconds;
beware.
conn.Type = "odbc"
' In the next line you can try different values in TDS_Version, make sure
your app works with the chosen one.
' I found that TDS_Version=7.2 works the most, and supports MSSQLServer
2003 and up.
conn.Host = "Driver=FreeTDS; TDS_Version=7.2; Server=<sqlIPOrName>;
Port=<sqlServerPort>; Database=<initialDatabaseName>; UId=<sqlUser>;
Pwd=<sqlPassword>"
Try
conn.Open()
Finally
Dec Application.Busy ' When Application.Busy is zero, pointer gets
back to normal/arrow
Catch
Message.Title = Application.Title
Message.Error("Error connecting: '" & Error.Text & "' in " &
Error.Where)
Once the connection's open, you can run queries as follows:
Dim res As Result
res = conn.Execute("SELECT * FROM Table1")
While res.Available()
' Do something with result's field data array res[fldIndex]
If (res.MoveNext()) Then
Break ' Exit the loop
Endif
Wend
That was extracted (not complete, just the barebones) from a working
program I have made and so far runs flawlessly.
I also tried my program with SQLite and Firebird drivers successfully.
Hope it helps,
zxMarce.
| Re: Gambas + ODBC + MSSQLS | System64 Development <64xcode@xxxxxxxxx> |
| Gambas + ODBC + MSSQLS | System64 Development <64xcode@xxxxxxxxx> |