Wiki
Version 2 (modified by Chuck, 16 years ago)

--

This guide will show you how to set up MySQL access for NovellMono on UnixLike systems.

This guide assumes that:

  • You are on a UnixLike box (Mac, Linux, etc.)
  • You have installed the MySQL server
  • You have started the MySQL server
  • Have installed Cobra
  • Have downloaded the MySQL connector for .NET to a directory called Packages

From the command line:

mkdir mysqlcon
cp Packages/mysql-connector-net-6.0.4-noinstall.zip mysqlcon/
cd mysqlcon
unzip mysql-connector-net-6.0.4-noinstall.zip
cat README
mv mysql.data.dll MySql.Data.dll
gacutil -i MySql.Data.dll
# or:
sudo gacutil -i MySql.Data.dll
    Installed MySql.Data.dll into the gac (/Library/Frameworks/Mono.framework/Versions/2.4/lib/mono/gac)

If you like, you can "rm -rf" the "mysqlcon" directory as the .dll now resides in the GAC. You'll want to keep the original .zip around in case you need to install on another machine or reinstall.

There are some other DLLs in there like mysql.data.cf.dll, mysql.data.entity.dll, mysql.visualstudio.dll and mysql.web.dll. I have not explored them other than to take a quick glance at the types contained therein. Everything I seem to need at this time is in the on DLL, MySql.Data.dll.

The namespaces in MySql.Data.dll are:

You can use .NET Reflector or some other tool to explore the DLL in more detail.

Let's try it out.

$ cd /usr/local/cobra/current/HowTo/
$ cobra -ref:System.Data -ref:MySql.Data 600-AccessMySQL.cobra 
error: cannot find metadata file "MySql.Data.dll"
Compilation failed - 1 error, 0 warnings
Not running due to errors above.

Well that's not very exciting. Let's try the full path:

$ cobra -ref:System.Data \
  -ref:/Library/Frameworks/Mono.framework/Versions/2.4/lib/mono/gac/MySql.Data/6.0.4.0__c5687fc88969c44d/MySql.Data.dll \
  600-AccessMySQL.cobra 
userName=root, host=localhost
userName=root, host=mycomputer.local
userName=, host=mycomputer.local
userName=, host=localhost

Look at the source code for 600-AccessMySQL.cobra to see how basic queries are done.

At this point, I don't know why the absolute path is required given that the DLL was installed to the GAC. But you can bury this ugly detail in a build script.

See also: ADO.NET, ActiveRecord