C#访问MySQL数据库的方法

(1)首先需要下载C#访问MySQL数据库的ADO.NET驱动程序

下载地址为:

http://dev.mysql.com/downloads/connector/net/6.0.html

我下载的版本为: mysql-connector-net-6.3.8.msi

下载地址如下url:

http://dev.mysql.com/downloads/mirror.php?id=405442

(2)安装mysql-connector-net

然后直接在Windows操作系统安装 mysql-connector-net-6.3.8.msi

默认是安装在C盘:

C:\Program Files\MySQL\MySQL Connector Net 6.3.8\Assemblies

v2.0

v4.0

安装完后我选择的是v2.0版本的

然后在应用工程中引用组件MySQL.Data.dll

(3)封装数据库访问组件DbConnectionMySQL

[csharp] view
plain
copy

  1. /// <summary>
  2. /// MySQL数据库
  3. /// 版本 mysql-connector-net-6.3.8.msi
  4. /// vp:hsg
  5. /// create date:2012-02-28
  6. /// </summary>
  7. [Serializable]
  8. public class DbConnectionMySQL : DbConnectionWrapper
  9. {
  10. public DbConnectionMySQL(string pConnectionString)
  11. : base(pConnectionString)
  12. {
  13. this.m_dbconn = new MySqlConnection(pConnectionString);
  14. this.m_DbConnState = DbConnState.Free;
  15. }
  16. //--
  17. public override DbDataAdapter GetDbDataAdapter()
  18. {
  19. return new MySqlDataAdapter();
  20. }
  21. public override DbDataAdapter GetDbDataAdapter(DbCommand dbCommand)
  22. {
  23. return new MySqlDataAdapter(dbCommand as MySqlCommand);
  24. }
  25. public override DbCommand GetDbCommand()
  26. {
  27. return new MySqlCommand();
  28. }
  29. public override DbConnection GetDbConnection()
  30. {
  31. return new MySqlConnection();
  32. }
  33. public override DbCommandBuilder GetDbCommandBuilder()
  34. {
  35. return new MySqlCommandBuilder();
  36. }
  37. public override DataProviderType GetCurrentDataProviderType()
  38. {
  39. return DataProviderType.Sql;
  40. }
  41. public override bool IsExistsTable(string TableName, string UserName)
  42. {
  43. #region information
  44. bool rbc = false;    //TABLES表中去查询 table_name
  45. string dSql = "select * from TABLES where table_name='" + TableName + "'";
  46. DataSet ds = this.ExecuteDataSet(dSql);
  47. if (ds != null)
  48. {
  49. if (ds.Tables[0].Rows.Count > 0)
  50. {
  51. rbc = true;
  52. }
  53. else
  54. {
  55. rbc = false;
  56. }
  57. }
  58. else
  59. {
  60. rbc = false;
  61. }
  62. return rbc;
  63. #endregion
  64. }
  65. public override bool IsExistsField(string FieldName, string TableName)
  66. {
  67. #region information
  68. bool rbc = false;
  69. string dSql = "";
  70. dSql = "select * from " + TableName + " where 1<>1";
  71. DataSet ds = this.ExecuteDataSet(dSql);
  72. if (ds != null)
  73. {
  74. DataTable dt = ds.Tables[0];
  75. for (int j = 0; j < dt.Columns.Count; j++)
  76. {
  77. if (dt.Columns[j].ColumnName.ToString().ToUpper() == FieldName.ToString().ToUpper())
  78. {
  79. rbc = true;
  80. goto Return_End;
  81. }
  82. }
  83. dt.Dispose();
  84. dt = null;
  85. }
  86. ds.Dispose();
  87. ds = null;
  88. Return_End:
  89. return rbc;
  90. #endregion
  91. }
  92. public override char ParameterChar
  93. {
  94. get
  95. {
  96. return ':';   //SQLite的参数符号为:
  97. }
  98. }
  99. public override DbParameter CreateParameter(string name, object value)
  100. {
  101. return new MySqlParameter(name, value);
  102. }
  103. public override DbParameter CreateParameter(string name)
  104. {
  105. DbParameter dbp = new MySqlParameter();
  106. dbp.ParameterName = name;
  107. return dbp;
  108. }
  109. public override DbParameter CreateParameter(string name, DbType dbtype, object value)
  110. {
  111. DbParameter dbp = new MySqlParameter();
  112. dbp.ParameterName = name;
  113. dbp.Value = value;
  114. dbp.DbType = dbtype;
  115. return dbp;
  116. }
  117. public override DbParameter CreateParameter(string name, DbType dbtype, int size, object value)
  118. {
  119. DbParameter dbp = new MySqlParameter();
  120. dbp.ParameterName = name;
  121. dbp.Value = value;
  122. dbp.DbType = dbtype;
  123. dbp.Size = size;
  124. return dbp;
  125. }
  126. }

(4)客户端访问测试开发实例

[csharp] view
plain
copy

  1. public void TestCShape_MySQL()
  2. {
  3. string constr = "server=localhost;User Id=root;password=root;Database=xp_users";
  4. DbConnectionWrapper dbw = new DbConnectionMySQL(constr);
  5. bool rbc=dbw.TestConnection();
  6. this.Context.Response.Write(rbc);
  7. string x = "";
  8. //删除语句
  9. x = "delete from xp_users";
  10. if (dbw.ExecuteQuery(x) > 0)
  11. {
  12. this.Context.Response.Write("删除语句成功!下面是SQL语句<br>" + x);
  13. }
  14. //插入语句
  15. x = "insert into xp_users(gid,uid,uname,sex,email,pwd) values('";
  16. x += "1','hsg77','何XXX',1,'[email protected]','1')";
  17. if (dbw.ExecuteQuery(x) > 0)
  18. {
  19. this.Context.Response.Write("插入语句成功!下面是SQL语句<br>"+x);
  20. }
  21. //查询语句
  22. DataTable dt = dbw.ExecuteDataTable("select * from xp_users");
  23. if (dt != null && dt.Rows.Count > 0)
  24. {
  25. this.Context.Response.Write("<br>用户数:"+dt.Rows.Count);
  26. }
  27. if (dt != null)
  28. {
  29. dt.Dispose();
  30. dt = null;
  31. }
  32. dbw.Dispose();
  33. dbw = null;
  34. }

----the---end---

create date:2012-02-28

04-23 09:21