<div dir="ltr"><div>Gianluigi et al,</div><div><br></div><div>With the usual <i>I need to connect to database XXX using ODBC</i> claim, I think a couple of clarifications are needed.<br></div><div><br></div><div>1- Important: The Gambas ODBC
 interface targets unixODBC, not iODBC (actually I did not test against iODBC myself; it may or may not work).<br></div><div><br></div><div>
<div>2- ODBC is not a database driver per-sé; instead, it is a <i>Driver Manager</i>.</div>

</div><div><br></div><div>You do not connect to a <i><b>FooBar</b></i> database with ODBC, you connect to a <i><b>FooBar</b></i> database with a <i><b>FooBar ODBC Driver</b></i>, managed by ODBC.</div><div>That is why all connection strings have at the very least a <i><b>Driver={FooBar}</b></i> parameter; it tells ODBC which actual low-level, ODBC-compliant driver to use.</div><div>In turn, the Gambas application uses the standardized database-interface offered by ODBC to send/receive queries/data to/from the actual database.</div><div><br></div><div>ODBC is, then, some kind of "middle man" standing between the actual low-level connectivity driver and your application, "filing the burrs" between them.</div><div></div><div><br></div>The advantage is simple yet powerful: Your application can connect to a DB2, MySQL, MSSQL or any other database that provides an ODBC-compliant driver, and you do (almost-)nothing at the application level to issue queries and get results back. You want to change DB2 for MySQL? Change the connstring, and you're mostly done... Well, yes, subtle differences between vendor database features may call for some kind of code adjusting, but it is usually minimal... or that's at least the goal.<br><div><br></div><div>Regards,</div><div>zxMarce.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Oct 19, 2020 at 2:45 PM Gianluigi <<a href="mailto:bagonergi@gmail.com">bagonergi@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno lun 19 ott 2020 alle ore 19:35 First Last <<a href="mailto:d4t4full@gmail.com" target="_blank">d4t4full@gmail.com</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>(Sorry for the "mailus interruptus", I'll start over.)</div><div>
<div><br></div><div>In <a href="https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.apdv.cli.doc/doc/t0006349.html" target="_blank"><b>this link</b></a> you'll find info about setting up the whole DB2 under ODBC environment for Linux/Unix, courtesy of IBM.</div><div>Note that since Aug 2015, though, there are two ways to set up pretty much <i>any</i> database using ODBC in Gambas.</div><div>The
 first one is setting up the whole unixODBC Driver Manager environment 
as above described and normally used, but it takes time, is kind of 
error-prone and tiresome if you have to deploy the same app to a bunch 
of end users (same setup over and over...).</div><div><br></div><div>The second approach I tried to assimilate as smoothly as possible to whatever already existed, and is similar to what exists on Windows platforms, and it is the use of "Connection Strings".<br></div><div>Basically, you tell ODBC all the settings that normally go in the several ODBC config files in a single string, and the ODBC Driver Manager will take care of the connection.</div><div><br></div><div>This is an example Connection String for connecting to a MSSQL Server 
 2005 using freeTDS from ODBC</div><div>
<div><br></div><div><i><b>"Driver=FreeTDS;TDS_Version=7.2;Server={serverIP};Port=1433;Database={databaseName};UId={userName};Password={password}"</b></i><br></div>

</div><div><br></div><div>In Gambas, you'd connect this way:</div><div><br></div><div><i><b>' Gambas class file</b></i></div><div><i><b>Private $conn As Connection</b></i></div><div><i><b>'[...]</b></i></div><div><i><b>Private Sub Connect(connString As String)<br></b></i></div><i><b>

</b></i></div><div><i><b><br></b></i></div><div><i><b>  $conn = New Connection</b></i></div><div><i><b>  $conn.Type = "odbc" 'Yup, lowercase.</b></i></div><div><i><b>  $conn.Host = connString</b></i></div><div><i><b><br></b></i></div><div><i><b>  $conn.Open()</b></i></div><div><i><b><br></b></i></div><div><i><b>End<br></b></i></div><div><br></div><div>You just call Connect() with the adequate connection string.<br></div><div><br></div><div>Now, parameters for the vast amount of different drivers depend on the actual driver used by ODBC
 (unfortunately, I don't have access to anything besides MSSQL), as an example, the <i><b>TDS_Version</b></i>
 parameter

 in the example above sets some defaults in FreeTDS so it knows "beforehand" to what kind of server it will connect.</div><div>Beware: Some parameters may, others WILL, affect connectivity and may also impact overall speed.<br></div><div><br></div><div>HTH,</div><div>zxMarce.<br></div></div></blockquote><div><br></div><div>Hi,</div><div><br></div><div>thank you very much, I pass the information to our friend immediately...</div><div><br></div><div>Regards</div><div>Gianluigi<br></div></div></div>
<br>
----[ <a href="http://gambaswiki.org/wiki/doc/netiquette" rel="noreferrer" target="_blank">http://gambaswiki.org/wiki/doc/netiquette</a> ]----<br>
</blockquote></div>