26.2.4.2. Connecting to MySQL Using MySQL Connector/NET
All interaction between a .NET application and the MySQL
server is routed through a MySqlConnection
object. Before your application can interact with the server,
a MySqlConnection
object must be instanced,
configured, and opened.
Even when using the MySqlHelper
class, a
MySqlConnection
object is created by the
helper class.
In this section, we will describe how to connect to MySQL
using the MySqlConnection
object.
26.2.4.2.2. Creating a Connection String
The MySqlConnection
object is configured
using a connection string. A connection string contains sever
key/value pairs, separated by semicolons. Each key/value pair
is joined with an equals sign.
The following is a sample connection string:
Server=127.0.0.1;Uid=root;Pwd=12345;Database=test;
In this example, the MySqlConnection
object
is configured to connect to a MySQL server at
127.0.0.1
, with a username of
root
and a password of
12345
. The default database for all
statements will be the test
database.
The following options are typically used (a full list of
options is available in the API documentation):
Server
: The name or network address of
the instance of MySQL to which to connect. The default is
localhost
. Aliases include
host
, Data Source
,
DataSource
, Address
,
Addr
and Network
Address
.
Uid
: The MySQL user account to use when
connecting. Aliases include User Id
,
Username
and User
name
.
Pwd
: The password for the MySQL account
being used. Alias Password
can also be
used.
Database
: The default database that all
statements are applied to. Default is
mysql
. Alias Initial
Catalog
can also be used.
Port
: The port MySQL is using to listen
for connections. Default is 3306
.
Specify -1
for this value to use a
named-pipe connection.
26.2.4.2.3. Opening a Connection
Once you have created a connection string it can be used to
open a connection to the MySQL server.
The following code is used to create a
MySqlConnection
object, assign the
connection string, and open the connection.
[VB]
Dim conn As New MySql.Data.MySqlClient.MySqlConnection
Dim myConnectionString as String
myConnectionString = "server=127.0.0.1;" _
& "uid=root;" _
& "pwd=12345;" _
& "database=test;"
Try
conn.ConnectionString = myConnectionString
conn.Open()
Catch ex As MySql.Data.MySqlClient.MySqlException
MessageBox.Show(ex.Message)
End Try
[C#]
MySql.Data.MySqlClient.MySqlConnection conn;
string myConnectionString;
myConnectionString = "server=127.0.0.1;uid=root;" +
"pwd=12345;database=test;";
try
{
conn = new MySql.Data.MySqlClient.MySqlConnection();
conn.ConnectionString = myConnectionString;
conn.Open();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
MessageBox.Show(ex.Message);
}
You can also pass the connection string to the constructor of
the MySqlConnection
class:
[VB]
Dim myConnectionString as String
myConnectionString = "server=127.0.0.1;" _
& "uid=root;" _
& "pwd=12345;" _
& "database=test;"
Try
Dim conn As New MySql.Data.MySqlClient.MySqlConnection(myConnectionString)
conn.Open()
Catch ex As MySql.Data.MySqlClient.MySqlException
MessageBox.Show(ex.Message)
End Try
[C#]
MySql.Data.MySqlClient.MySqlConnection conn;
string myConnectionString;
myConnectionString = "server=127.0.0.1;uid=root;" +
"pwd=12345;database=test;";
try
{
conn = new MySql.Data.MySqlClient.MySqlConnection(myConnectionString);
conn.Open();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
MessageBox.Show(ex.Message);
}
Once the connection is open it can be used by the other
MySQL Connector/NET classes to communicate with the MySQL server.
26.2.4.2.4. Handling Connection Errors
Because connecting to an external server is unpredictable, it
is important to add error handling to your .NET application.
When there is an error connecting, the
MySqlConnection
class will return a
MySqlException
object. This object has two
properties that are of interest when handling errors:
When handling errors, you can your application's response
based on the error number. The two most common error numbers
when connecting are as follows:
The following code shows how to adapt the application's
response based on the actual error:
[VB]
Dim myConnectionString as String
myConnectionString = "server=127.0.0.1;" _
& "uid=root;" _
& "pwd=12345;" _
& "database=test;"
Try
Dim conn As New MySql.Data.MySqlClient.MySqlConnection(myConnectionString)
conn.Open()
Catch ex As MySql.Data.MySqlClient.MySqlException
Select Case ex.Number
Case 0
MessageBox.Show("Cannot connect to server. Contact administrator")
Case 1045
MessageBox.Show("Invalid username/password, please try again")
End Select
End Try
[C#]
MySql.Data.MySqlClient.MySqlConnection conn;
string myConnectionString;
myConnectionString = "server=127.0.0.1;uid=root;" +
"pwd=12345;database=test;";
try
{
conn = new MySql.Data.MySqlClient.MySqlConnection(myConnectionString);
conn.Open();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
switch (ex.Number)
{
case 0:
MessageBox.Show("Cannot connect to server. Contact administrator");
case 1045:
MessageBox.Show("Invalid username/password, please try again");
}
}