OdbcConnection is used with MySQL. It often leads to syntax errors. The connection string does not allow quotes around the values. With some care this SQL database object in C# programs is effective.
Overview. We explore the OdbcConnection objects in the C# language and .NET Framework. After the basics, I will break down other details, such as how to add the code and actually use the OdbcConnection.
ODBC The acronym ODBC stands for open database connectivity. The "open" refers to the platform status, not the connection state.
These connections work with more than one SQL server, so you can use ODBC in many different scenarios. The scenario I outline uses ODBC connections in an ASP.NET application that accesses a MySQL database.
Performance The applications you build with this combination have the potential to be fast and responsive.
Connection string. Usually, if you are using a third-party web host, they provide you with a sample connection string. This is useful, but you need to be careful. There are some tricks. On my web apps, I have connection strings that look like these.
Driver Specify the driver as MySQL ODBC 3.51 Driver in curly brackets. This version may be different for your setup.
Quotes Don't put quotes around your driver. If you do put quotes, it might not work as you want it to.
Database server Put your server URL in there. You will have to get this from your web host.
Attribute values The database's name is OkieData. The user name is SamAllen. The password is CutiePie.
All quotes If you read nothing else here read this. You can't put quotes around any of the values.
<!-- This XML should be put in Web.config -->
<add name="WhateverName" connectionString="Exact string shown above"/>
My experience. I spent a hectic half-hour or more trying to log in to the MySQL database with this configuration with quotes around my password. These attempts failed. You cannot have those quotes.
Using statements: C#
Web.config. It is best practice, although not required, to put your connection string in Web.config in your ASP.NET project. Here are the lines I used. You will have to find the appropriate blocks in the XML config file yourself.
And In this next XML element example, I use the connection string name of WhateverName.
Fragment that uses ConnectionStrings: C#
// Try to connect to the database based on our stored connection string.
string conString = WebConfigurationManager.
using (OdbcConnection con = new OdbcConnection(conString))
// We are now connected. Now we can use OdbcCommand objects
// to actually accomplish things.
Using. Your page will have a code-behind file. At the top are your using-statements. Add these two using-statements at the top. The first adds the database stuff, and the second allows you to access your connection string.
Fragment that uses OdbcDataReader, MySQL: C#
using (OdbcCommand com = new OdbcCommand(
"SELECT ColumnWord FROM OkieTable WHERE MagicKey = ?", con))
using (OdbcDataReader reader = com.ExecuteReader())
string word = reader.GetString(0);
// Word is from the database. Do something with it.
New. We can create an OdbcConnection by combining it with the using-statement. The next code block gets our special connection string from the Web.config file. The contents of that string are shown above.
The OdbcConnection with the identifier "con" is a new connection to the database. These are automatically pooled and shared. That code was written by Microsoft programmers skilled in these things. I could not easily improve it.
MySQL. In this next code block, I will declare a new OdbcCommand object, then add a parameter to the command object, and then read in data from the database. Note the question mark in the command text.
The OdbcCommand takes the connection object as the second parameter. The paramWord string is added to the command. It is named @var but that doesn't matter. The parameter is added in the first question mark.
And It looks through the table and find the rows where the MagicKey column is equal to paramWord.
Summary. Here we fixed bugs with OdbcConnection. This can be applied to any ADO.NET provider, from SqlConnection objects to SqlCeConnections and SQLiteConnections. Use the material here as a launching point for learning more about ADO.NET.