C#访问MySQL数据库的方法
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
- /// <summary>
- /// MySQL数据库
- /// 版本 mysql-connector-net-6.3.8.msi
- /// vp:hsg
- /// create date:2012-02-28
- /// </summary>
- [Serializable]
- public class DbConnectionMySQL : DbConnectionWrapper
- {
- public DbConnectionMySQL(string pConnectionString)
- : base(pConnectionString)
- {
- this.m_dbconn = new MySqlConnection(pConnectionString);
- this.m_DbConnState = DbConnState.Free;
- }
- //--
- public override DbDataAdapter GetDbDataAdapter()
- {
- return new MySqlDataAdapter();
- }
- public override DbDataAdapter GetDbDataAdapter(DbCommand dbCommand)
- {
- return new MySqlDataAdapter(dbCommand as MySqlCommand);
- }
- public override DbCommand GetDbCommand()
- {
- return new MySqlCommand();
- }
- public override DbConnection GetDbConnection()
- {
- return new MySqlConnection();
- }
- public override DbCommandBuilder GetDbCommandBuilder()
- {
- return new MySqlCommandBuilder();
- }
- public override DataProviderType GetCurrentDataProviderType()
- {
- return DataProviderType.Sql;
- }
- public override bool IsExistsTable(string TableName, string UserName)
- {
- #region information
- bool rbc = false; //TABLES表中去查询 table_name
- string dSql = "select * from TABLES where table_name='" + TableName + "'";
- DataSet ds = this.ExecuteDataSet(dSql);
- if (ds != null)
- {
- if (ds.Tables[0].Rows.Count > 0)
- {
- rbc = true;
- }
- else
- {
- rbc = false;
- }
- }
- else
- {
- rbc = false;
- }
- return rbc;
- #endregion
- }
- public override bool IsExistsField(string FieldName, string TableName)
- {
- #region information
- bool rbc = false;
- string dSql = "";
- dSql = "select * from " + TableName + " where 1<>1";
- DataSet ds = this.ExecuteDataSet(dSql);
- if (ds != null)
- {
- DataTable dt = ds.Tables[0];
- for (int j = 0; j < dt.Columns.Count; j++)
- {
- if (dt.Columns[j].ColumnName.ToString().ToUpper() == FieldName.ToString().ToUpper())
- {
- rbc = true;
- goto Return_End;
- }
- }
- dt.Dispose();
- dt = null;
- }
- ds.Dispose();
- ds = null;
- Return_End:
- return rbc;
- #endregion
- }
- public override char ParameterChar
- {
- get
- {
- return ':'; //SQLite的参数符号为:
- }
- }
- public override DbParameter CreateParameter(string name, object value)
- {
- return new MySqlParameter(name, value);
- }
- public override DbParameter CreateParameter(string name)
- {
- DbParameter dbp = new MySqlParameter();
- dbp.ParameterName = name;
- return dbp;
- }
- public override DbParameter CreateParameter(string name, DbType dbtype, object value)
- {
- DbParameter dbp = new MySqlParameter();
- dbp.ParameterName = name;
- dbp.Value = value;
- dbp.DbType = dbtype;
- return dbp;
- }
- public override DbParameter CreateParameter(string name, DbType dbtype, int size, object value)
- {
- DbParameter dbp = new MySqlParameter();
- dbp.ParameterName = name;
- dbp.Value = value;
- dbp.DbType = dbtype;
- dbp.Size = size;
- return dbp;
- }
- }
(4)客户端访问测试开发实例
- public void TestCShape_MySQL()
- {
- string constr = "server=localhost;User Id=root;password=root;Database=xp_users";
- DbConnectionWrapper dbw = new DbConnectionMySQL(constr);
- bool rbc=dbw.TestConnection();
- this.Context.Response.Write(rbc);
- string x = "";
- //删除语句
- x = "delete from xp_users";
- if (dbw.ExecuteQuery(x) > 0)
- {
- this.Context.Response.Write("删除语句成功!下面是SQL语句<br>" + x);
- }
- //插入语句
- x = "insert into xp_users(gid,uid,uname,sex,email,pwd) values('";
- x += "1','hsg77','何XXX',1,'hsg77@163.com','1')";
- if (dbw.ExecuteQuery(x) > 0)
- {
- this.Context.Response.Write("插入语句成功!下面是SQL语句<br>"+x);
- }
- //查询语句
- DataTable dt = dbw.ExecuteDataTable("select * from xp_users");
- if (dt != null && dt.Rows.Count > 0)
- {
- this.Context.Response.Write("<br>用户数:"+dt.Rows.Count);
- }
- if (dt != null)
- {
- dt.Dispose();
- dt = null;
- }
- dbw.Dispose();
- dbw = null;
- }
----the---end---
create date:2012-02-28
C#访问MySQL数据库的方法的更多相关文章
- 在Eclipse中使用JDBC访问MySQL数据库的配置方法
在Eclipse中使用JDBC访问MySQL数据库的配置方法 分类: DATABASE 数据结构与算法2009-10-10 16:37 5313人阅读 评论(10) 收藏 举报 jdbcmysql数据 ...
- 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决(转载)
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- .NET连接MySql数据库的方法及示例
方法一: 使用MySQL推出的MySQL Connector/Net组件, 该组件是MySQL为ADO.NET访问MySQL数据库设计的.NET专用访问组件.完成该组件后,需要在项目中引用这个组件,也 ...
- C#连接、访问MySQL数据库
一.准备工具 visual stuido(本示例使用visual studio 2010) MySql.Data.dll mysql_installer_community_V5.6.21.1_set ...
- 30多条mysql数据库优化方法【转】
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- Spring Boot入门(六):使用MyBatis访问MySql数据库(注解方式)
本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 本篇博客我们讲解下在Spring Boot中使用MyBatis访问MySql数据库的简单用法. 1.前期 ...
- 转载:30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- MySQL入门很简单: 15 java访问MySQL数据库
1. 连接数据库 1.1 下载安装驱动 java通过JDBC(Java Database Connectivity,Java数据库连接)来访问MySQL数据库.JDBC的编程接口提供的接口和类与MyS ...
- 怎么设置才能让外网ip可以访问mysql数据库[转]
转自: http://www.hongyanliren.com/89.html 使用mysql中,很多人都会遇到这样的问题:在vps服务器或者云服务器上安装了mysql后,使用其他工具在外网ip之下根 ...
随机推荐
- 基于jsp+servlet图书管理系统之后台用户信息插入操作
前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研 ...
- 在Centos下用alternative命令切换各个版本的jdk的方法
https://blog.csdn.net/nsrainbow/article/details/43273991 https://blog.csdn.net/yzh_1346983557/articl ...
- P3763 [TJOI2017]DNA
链接:https://www.luogu.org/problemnew/show/P3763 题解: 挺水的一题后缀数组 枚举每一个开头用后缀数组判断能否在3次内匹配完
- python全栈开发day20-类的三大特性继承、多态、封装
1 继承 1.怎么继承,父类和子类 class 类名(父类):pass 除了__init__下对象属性不能自动继承外,其他的类属性和动态方法,子类对象都可以访问到. 2.子类对象查找属性的顺序,对象现 ...
- python常用内建模块--datetime
datetime模块中的datetime类: 获取当前时间:datetime.now() 当前操作系统时区时间,date.utctime(UTC时间) 转换成时间戳:timestamp() 和具体时区 ...
- 【noip模拟赛7】足球比赛 树
描述 在2009的中国城市足球比赛中,在2^N支队中,有一些队在开赛前宣布了退出比赛.比赛采取的是淘汰赛.比如有4支队伍参加,那么1队和2队比赛,3队和4队赛,然后1队和2队的胜者与3队和4队的胜者争 ...
- 【Java】 剑指offer(18) 删除链表中重复的结点
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 在一个排序的链表中,如何删除重复的结点?例如,在图3.4(a)中重 ...
- 009 搭建Spark的maven本地windows开发环境以及测试
在看完下面的细节之后,就会发现,spark的开发,只需要hdfs加上带有scala的IDEA环境即可. 当run运行程序时,很快就可以运行结束. 为了可以看4040界面,需要将程序加上暂定程序,然后 ...
- 51Nod1577 异或凑数 线性基 构造
国际惯例的题面:异或凑出一个数,显然是线性基了.显然我们能把区间[l,r]的数全都扔进一个线性基,然后试着插入w,如果能插入,则说明w不能被这些数线性表出,那么就要输出"NO"了. ...
- 11.7 NOIP模拟赛
目录 2018.11.7 NOIP模拟 A 序列sequence(two pointers) B 锁lock(思路) C 正方形square(埃氏筛) 考试代码 B C 2018.11.7 NOIP模 ...