MYSQL的几种连接方法
连接MySQL有下列几种方法:针对不同的语言和不同的驱动:
l Connector/ODBC
l Connector/Net
l Connector/J
l Connector/Python
l Connector/C++
l Connector/C
一个最简单的数据库连接示例:使用Connector/Net
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data;
using MySql.Data.MySqlClient;
namespace MySQLConnect
{
class Program
{
static void Main(string[] args)
{
MySqlConnection conn = new MySqlConnection();
conn.ConnectionString = "Database=sakila;Host=localhost;Port=55944;User Id=us_rgyu;Password=Tongyun@2013007;charset=utf8;pooling=true;";
conn.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT @@VERSION";
string versionInfo = cmd.ExecuteScalar().ToString();
Console.WriteLine("version=" + versionInfo);
}
}
}
连接的时候,最容易碰到下面两种错误:
- Error Number=0: Cannot connect to server
- Error Number=1045: Invalid user name and/or password
连接的时候,如果没有指定字符集,那么缺省会用Latin1字符集。
MySQL的命令缺省值缺省为30秒。
每隔三分钟,MySQL的客户端和服务器端会运行作业,对于Pool内三分钟之前Idle的连接进行移除。包括客户端的端口资源的释放,以及服务器端的端口资源和线程资源释放。
连接字符串选项:
选项 |
缺省值 |
描述 |
AllowBatch |
开 |
支持多个命令放在一起,用分号隔开。 |
AllowUserVariables |
关 |
在SQL语句中有变量 |
AllowZeroDateTime |
关 |
如开启,MySqlDataReader.GetValue()返回一个零值 |
AutoEnlist |
开 |
暂无多大用处 |
BlobAsUTF8ExcludePattern |
NULL |
不包含UTF8 的BLOB列的regular expression |
BlobAsUTF8IncludePattern |
NULL |
包含UTF8 的BLOB列的regular expression |
CertificateFile |
NULL |
证书文件 |
CertificatePassword |
NULL |
证书密码 |
CertificateStoreLocation |
NULL |
证书位置 |
CertificateThumbprint |
NULL |
证书手印 |
CharSet |
|
发送给服务器查询的字符集。(返回结果的字符集依旧沿用服务器) |
CheckParameters |
TRUE |
存储过程的参数检查 |
CommandInterceptors |
|
解释器集合 |
ConnectionTimeout |
15 |
连接超时 |
Connect_Attrs |
|
传入连接属性,如版本号,program_name等 |
ConvertZeroDateTime |
False |
当为真时,对于不允许的时间,会返回DateTime.MinValue |
DefaultCommandTimeout |
30 |
查询超时时间 |
DefaultTableCacheAge |
60 |
缓存时间 |
enableSessionExpireCallBack |
False |
暂无多大用处 |
UseSSL |
False |
使用SSL加密 |
ExceptionInterceptors |
|
错误解释器集合 |
FunctionsReturnString |
False |
暂无多大用处 |
Host, Server, Data Source, Addr, Address, DataSource, Network Address |
Localhost |
连接的服务器名 |
IgnorePrepare |
True |
自动忽略MySqlCommand.Prepare() |
Includesecurityasserts |
False |
暂无多大用处 |
Initial Catalog,database |
Mysql |
要连接的数据库 |
Interactive |
False |
如果是真的话,那么客户端则是interactive client,服务器上的wait_timeout则会起作用。 |
IntegratedSecurity |
No |
集成验证 |
Keepalive |
0 |
第一个TCP keepalive包发送之前的等待时间。0表示不用keepalive,以秒为单位 |
Logging |
False |
用于记录Trace信息 |
oldGUIDs |
False |
GUID是从BINARY(16)改为CHAR(36),如为真,沿用BINARY(16) |
useOldSyntax |
False |
暂无多大用处 |
Password, pwd |
|
密码 |
PersistSecurityInfo |
False |
是否要显示密码信息。 |
PipeName |
Mysql |
使用Named Pipe进行连接 |
Port |
3306 |
连接数据库服务器的端口号 |
Procedurecache |
25 |
缺省情况下,.NET保存最近25个的存储过程的输入输出参数信息 |
Protocol |
Socket |
连接的协议,选项有TCP(SOCKET), PIPE, UNIX, MEMORY |
Replication |
False |
是否连接的是Replication服务器 |
RespectBinaryFlags |
True |
尊重Column的binary flags |
SharedMemoryName |
MYSQL |
对于protocol为memory时有效 |
Sqlservermode |
False |
当为真时,课用[]来代替``, 对性能会有影响,不建议用 |
SSLMode |
None |
暂无多大用处 |
Tablecaching |
False |
暂无多大用处 |
TreatBlogsAsUTF8 |
False |
暂无多大用处 |
TreatTinyAsBoolean |
True |
否则的话,TINYINT(1)会被视为INT |
UseAffectedRows |
False |
暂无多大用处 |
UseProcedureBodies |
True |
存储过程是可读的,可帮助判定参数类型和顺序 |
User ID, UserID, UserName, Uid, User Name, User |
|
登录名 |
UseUsageAdvisor |
False |
暂无多大用处 |
UsePerformanceMonitor |
False |
要求在执行期间,性能计数器也相应更新 |
连接池相关的选项
选项 |
缺省值 |
描述 |
CachedServerProperties |
False |
SHOW VARIABLES 是否会更新。缺省是每次更新的。 |
ConnectionLifeTime |
0 |
如果超过指定时间,退回Pool里的连接是否要强制销毁,对A10环境比较有用。0值表示最大值。 |
ConnectionReset |
False |
每次从Pool里获得连接后,对连接状态是否要重置。 |
MaximumPoolSize |
100 |
Pool里的连接池大小 |
MinimumPoolSize |
0 |
Pool里的最小连接个数 |
Pooling |
True |
是否用连接池 |