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,'hsg77@163.com','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

C#访问MySQL数据库的方法的更多相关文章

  1. 在Eclipse中使用JDBC访问MySQL数据库的配置方法

    在Eclipse中使用JDBC访问MySQL数据库的配置方法 分类: DATABASE 数据结构与算法2009-10-10 16:37 5313人阅读 评论(10) 收藏 举报 jdbcmysql数据 ...

  2. 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决(转载)

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  3. .NET连接MySql数据库的方法及示例

    方法一: 使用MySQL推出的MySQL Connector/Net组件, 该组件是MySQL为ADO.NET访问MySQL数据库设计的.NET专用访问组件.完成该组件后,需要在项目中引用这个组件,也 ...

  4. C#连接、访问MySQL数据库

    一.准备工具 visual stuido(本示例使用visual studio 2010) MySql.Data.dll mysql_installer_community_V5.6.21.1_set ...

  5. 30多条mysql数据库优化方法【转】

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  6. Spring Boot入门(六):使用MyBatis访问MySql数据库(注解方式)

    本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 本篇博客我们讲解下在Spring Boot中使用MyBatis访问MySql数据库的简单用法. 1.前期 ...

  7. 转载:30多条mysql数据库优化方法,千万级数据库记录查询轻松解决

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  8. MySQL入门很简单: 15 java访问MySQL数据库

    1. 连接数据库 1.1 下载安装驱动 java通过JDBC(Java Database Connectivity,Java数据库连接)来访问MySQL数据库.JDBC的编程接口提供的接口和类与MyS ...

  9. 怎么设置才能让外网ip可以访问mysql数据库[转]

    转自: http://www.hongyanliren.com/89.html 使用mysql中,很多人都会遇到这样的问题:在vps服务器或者云服务器上安装了mysql后,使用其他工具在外网ip之下根 ...

随机推荐

  1. 小程序block标签配合if和else

    <block wx:if="{{hasMore}}"> <view class="loading-tip">拼命加载中…</vie ...

  2. Codeforces Round #309 (Div. 2) -D. Kyoya and Permutation

    Kyoya and Permutation 这题想了好久才写出来,没看题解写出来的感觉真的好爽啊!!! 题目大意:题意我看了好久才懂,就是给你一个序列,比如[4, 1, 6, 2, 5, 3],第一个 ...

  3. 【noip模拟赛7】足球比赛 树

    描述 在2009的中国城市足球比赛中,在2^N支队中,有一些队在开赛前宣布了退出比赛.比赛采取的是淘汰赛.比如有4支队伍参加,那么1队和2队比赛,3队和4队赛,然后1队和2队的胜者与3队和4队的胜者争 ...

  4. UVA 11426 (欧拉函数&&递推)

    题意:给你一个数N,求N以内和N的最大公约数的和 解题思路: 一开始直接想暴力做,4000000的数据量肯定超时.之后学习了一些新的操作. 题目中所要我们求的是N内gcd之和,设s[n]=s[n-1] ...

  5. POJ 3384 放地毯【半平面交】

    <题目链接> 题目大意: 给出一个凸多边形的房间,根据风水要求,把两个圆形地毯铺在房间里,不能折叠,不能切割,可以重叠.问最多能覆盖多大空间,输出两个地毯的圆心坐标.多组解输出其中一个,题 ...

  6. 洛谷 P1464 Function【记忆化搜索】

    题目链接 题目描述 对于一个递归函数w(a,b,c) 如果a<=0 or b<=0 or c<=0就返回值1. 如果a>20 or b>20 or c>20就返回w ...

  7. CTFlearn Inj3ction Time --sql注入python多线程脚本练习

    0x00前言: 本题是国外的一个CTF平台的题目,题目不难,但学习了波多线程payload写法 先看题目描述,提示"union是个有用的命令",估计是用联合查询就能出答案的(因为前 ...

  8. android studio 汉化

    the modules below are not imported from Gradle anymore. Check those to be removed from the ide proje ...

  9. ARC 101E.Ribbons on Tree(容斥 DP 树形背包)

    题目链接 \(Description\) 给定一棵\(n\)个点的树.将这\(n\)个点两两配对,并对每一对点的最短路径染色.求有多少种配对方案使得所有边都至少被染色一次. \(n\leq5000\) ...

  10. 51Nod.1244.莫比乌斯函数之和(杜教筛)

    题目链接 map: //杜教筛 #include<map> #include<cstdio> typedef long long LL; const int N=5e6; in ...