如何在.NET中使用MySQL数据库

如何在.NET中使用MySQL数据库,第1张

在 NET中一直使用Sql Server做数据库 前几天学习通过JDBC使用Java连接MySql数据库 我就想 NET是否同样可以使用MySql数据库呢?答案是肯定的 方法也很简单 在这里我使用C#作为编程语言 将自己整理出来的方法同大家一起分享

欲在 NET中使用MySql数据库 其步骤是 下载MySql驱动包 引用驱动包中已经编译好的MySql类组件 编写代码

步骤一 下载MySql驱动包

在我写篇文章的时候 最新的驱动包是 支持Visual Studio 官方下载地址是

步骤二 引入组件

下载的文件是一个压缩文件 将其解压缩到本地磁盘 找到bin文件夹中的MySql Data dll文件 这个就是我们要引用的组件 通过Visual Studio将其引用到你的项目中

最近在写一个.net项目,用的是mysql数据库。因为平时基本不怎么用mysql开发.net项目,于是上网百度了下关于.net引用mysql数据库的案例。

基本就是下载mysql数据库的驱动然后dll引入(具体网上有)

我按照网上的方法引入了dll,MySql.Data和MySQLDriverCS~~然后引用命名空间的时候用的是MySQLDriverCS。在配置文件中写连接字符串的时候,我是这么写的

<add name="connectionString" connectionString="server=192.168.1.247database=prodmngUser ID=rootPassword=rootport=3306" providerName="MySql.Data.MySqlClient" />

看起来应该是没错,但是在运行的时候老是报错,首先是报root账号的密码错误,后来,我把密码改成了本地数据库的root账号的密码,结果能连上数据库,而且是本地的数据库!!这说明我配置中写的sever的ip根本没起作用!后来我在网上有找了很久,找到了问题所在!代码如下:

<add name="connectionString" connectionString="Location=192.168.1.247Data Source=prodmngUser ID=rootPassword=rootport=3306" providerName="MySql.Data.MySqlClient" />

我把server改成location ,database改成Data Source 后,就能连上247服务器的数据库了!!

后来,在网上发现有些人是用MySql.Data.MySqlClient这个库的,然后我就试了下这个库。这个哭和之前那个MySQLDriverCS不同的地方在于里面的类名中的sql字母大小写不一样,比如MySql.Data.MySqlClient中的MySqlConnection在MySQLDriverCS中就是MySQLConnection。在引用这个库之后,我发现我之前改过的连接字符串报错了!不存在location这个属性,于是我把连接字符串改成之前那样:

<add name="connectionString" connectionString="server=192.168.1.247database=prodmngUser ID=rootPassword=rootport=3306" providerName="MySql.Data.MySqlClient" />

然后运行程序,没有问题,能访问数据库!

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

mysql-connector-net-6.3.8.msi

(2)安装mysql-connector-net

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

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

/// <summary>

    /// MySQL数据库 

    /// 版本 mysql-connector-net-6.3.8.msi

    /// </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=localhostUser Id=rootpassword=rootDatabase=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,'[email protected]','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

        }

文中实例来自一篇博客,由于百度知道对 url 地址封杀,不能直接给出链接!


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9244185.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存