Hi! What an excellent question. However, I have to admit I never used ODBC squeak driver. <br><br>I
hope you wanted to said SqueakDBX instead of OpenDBX :)  I guess you
are a Smalltalk programmer. Actually, we (SqueakDBX) has advantages
over other drivers and also, OpenDBX has over other libraries.<br>


<br>1) First, I will copy paste a piece of text from OpenDBX webpage: <br>

&quot;Contrary to interfaces like ODBC, the OpenDBX library favors speed and
flexibility and therefore doesn&#39;t try to unify the SQL query language.
It enables the application developer either to use only standardized
SQL elements or to utilize more efficient database specific language
elements as well. Furthermore, this approach allows adding support for
databases which don&#39;t implement SQL as query language.
&quot;<br><br>2)
OpenDBX supports: Firebird, Interbase, MS SQL Server, MySQL, Oracle,
PostgreSQL, Sqlite, Sybase ASE and ODBC. As you can see, OpenDBX has
ALSO a ODBC backend. <br><br>3) OpenDBX compiles in Linux, Windows and Mac (not only windows)<br>




<br>4) With OpenDBX you don&#39;t need (except you use the ODBC backend)
external configuration as you need when using ODBC (datasources and all
that stuff).<br><br>5) This is one of the most important: SqueakDBX, as
ODBC, uses FFI to communicate to external functions. As you may know
when you call a function with FFI, the COMPLETE VM is locked until the
function returns. Suppose that function is the one that process a
query. And suppose you have a WebApplication running in your Squeak.
You will lock ALL the VM to ALL users until the query is done. This can
be very very bad.  <br>
OpenDBX (when possible) uses asynchronous queries and has a timeout to
retry the query to see if it is done. But this wait is in Squeak, not
in C. So, if there are other request waiting, the scheduler will
process them. So, the time the VM is lock is shorter than in ODBC.<br>




<br>6)  I don&#39;t why you want to use ODBC but do you want to write SQL by hand? We don&#39;t :)<br>Glorp
is an ORM for Smalltalk. This is actually for VW and unfortunately, the
Squeak port only works on PostgreSQL. We are modifying it and
integrating Glorp with SqueakDBX. So, you will be able to use an ORM
for all backends. For more information, read:<br>



<a href="http://www.esug.org/Promotion/SummerTalk" target="_blank">http://www.esug.org/Promotion/SummerTalk</a><br>We hope to have this integration by the end of the year. Right now we have a proof of concept working with Glorp and SqueakDBX for PostgreSQL :)<br>
<br>7) We have 90 unit tests that are run for every backend. <br><br>8)
Lots of benchmarks and comparison with native drivers (PostgreSQL and
MySQL). We don&#39;t have benchmarks comparing to ODBC but I would love to
have. If you do something, please send your results.<br>



<br>9) SqueakDBX is very well documented. You can see our wiki page: <br><a href="http://wiki.squeak.org/squeak/6052" target="_blank">http://wiki.squeak.org/squeak/6052</a><br>In addition, we are creating our own seaside webpage, but it is not ready right now. <br>




<br>10) We have several features like: <br><ul><li>Transactional concept: begin transaction, commit and rollback
</li><li>Mappings from String to specific types in selects
</li><li>Special OpenDBX options: multistatements, encryption, compression, paged results, mySQL modes, and more
</li><li>Automated database connection release (although manual disconnection is recommended ;-)
</li><li>Automated results retrieving in order to do another query, after doing a query and not iterating ALL results
</li><li>Error handling: Not only errors, but levels associated with an
error in order to avoid FFI calls (if you get a fatal error, it has no
sense to do another query and the resources must be free).
</li><li>Query timeout (this is very useful for webapplications) and pageSize can be set for each query.
</li></ul><br>Obviously, we have our drawbacks: We don&#39;t support large
objects (blob, clob, etc..) yet neither Stored Procedures or functions
(altought we support multistatements). We also have little &quot;production&quot; uses of SqueakDBX, as it is relative new.<br><br>You other questions:<br><br>

Yes it works perfectly well in Pharo. Actually, half of the team
uses Pharo for the development and the other half, Squeak. We are also
the one that makes Glorp to work on Pharo. See my email in Pharo list: <a href="http://n2.nabble.com/-ANN--Glorp-now-load-easily-in-Pharo-td3056236.html#a3056236">http://n2.nabble.com/-ANN--Glorp-now-load-easily-in-Pharo-td3056236.html#a3056236</a><br>

<br>
You see an example, I would read the getting started in here: <a href="http://wiki.squeak.org/squeak/6061" target="_blank">http://wiki.squeak.org/squeak/6061</a>  All the examples there work for all backends (they work for mssql). This is the interesting things: the code is exatly the same to all backends. The only thing it could change is the sql written (if you wrote vendor specific sql).<br>


<br>That&#39;s all I imagine right now.<br><br>If you have further questions, please ask.<br><br>Best,<br><br>Mariano<br><br><br><br><div class="gmail_quote">On Mon, Jul 6, 2009 at 7:17 PM, Claudio Campos <span dir="ltr">&lt;<a href="mailto:claudio.sistemica@gmail.com">claudio.sistemica@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Dear Mariano,<br>
<br>
What are the advantages of OpenDBX vs ODBC?  How is the integration with Pharo? Glorp? Are there examples for ms sql server ?<br>
<br>
Thanks in advance,<br>
<br>
Claudio Campos<br>
<br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
SqueakDBX mailing list<br>
<a href="mailto:SqueakDBX@lists.squeakfoundation.org" target="_blank">SqueakDBX@lists.squeakfoundation.org</a><br>
<a href="http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx" target="_blank">http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx</a><br>
</blockquote></div><br>