web.config

<connectionStrings>
   <add name="MysqlDB" connectionString="Data Source=.;Initial Catalog=dbname;Persist Security Info=True;User ID=username;Password=password;" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace Service.Common
{
    public class DbMyHelp
    {   
        //连接字符串拼装  
        //mycon = new MySqlConnection("Host=127.0.0.1;UserName=root;Password=root;Database=score;Port=3306");
        //private static string config = System.Configuration.ConfigurationManager.AppSettings["MysqlDB"].ToString();
        private string config = string.Empty;
            /// <summary>
        /// 数据库连接串
        /// </summary>
        public string ConnectionString
        {
            set { config = value; }
        }

/// <summary>
        /// 构造
        /// </summary>
        public DbMyHelp(string connName)
        {
            this.config = System.Configuration.ConfigurationManager.ConnectionStrings[connName].ToString();
        }
        /// <summary>
        /// 查询返回List<T>
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sql"></param>
        /// <returns></returns>
        public List<T> QueryList<T>(string sql)
        {
            ///////////////////获取MYSQ看数据返回值////////////////////////////  
            MySqlConnection mycon = new MySqlConnection(config);
            //连接  
            mycon.Open();
            //查询命令赋值,可以写多条语句,多条语句之间用;号隔开  
            MySqlCommand mycom = new MySqlCommand(sql, mycon);
            MySqlDataReader myrec = mycom.ExecuteReader();

List<T> list = new List<T>();
            //一次次读,读不到就结束  
            while (myrec.Read())
            {
                T obj = ExecDataReader<T>(myrec);
                list.Add(obj); //string   myInfo = myInfo + myrec["Name"] + " " + myrec["ID"];
            }
            //////关闭相关对象  
            myrec.Close();
            mycom.Dispose();
            mycon.Close();
            return list;

}
        /// <summary>
        /// 查询返回object
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public object QueryObject(string sql)
        {
            ///////////////////获取MYSQ看数据返回值////////////////////////////  
            MySqlConnection mycon = new MySqlConnection(config);
            //连接  
            mycon.Open();
            //查询命令赋值,可以写多条语句,多条语句之间用;号隔开  
            MySqlCommand mycom = new MySqlCommand(sql, mycon);
            object obj = mycom.ExecuteScalar();
            //////关闭相关对象  
            mycom.Dispose();
            mycon.Close();
            return obj;

}
        /// <summary>
        /// 查询返回datatable
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public DataTable QueryTable(string sql)
        {
            MySqlConnection mycon = new MySqlConnection(config);
            mycon.Open();
            MySqlCommand mycom = new MySqlCommand(sql, mycon);
            DataSet dataset = new DataSet();//dataset放执行后的数据集合
            MySqlDataAdapter adapter = new MySqlDataAdapter(mycom);
            adapter.Fill(dataset);
            mycom.Dispose();
            mycon.Close();
            return dataset.Tables[0];
        }
        /// <summary>
        /// 操作增删改
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public int ExecutSql(string sql)
        {
            int result = 0;
            MySqlConnection mycon = new MySqlConnection(config);
            mycon.Open();
            MySqlCommand mycom = new MySqlCommand(sql, mycon);
            result = mycom.ExecuteNonQuery();
            mycom.Dispose();
            mycon.Close();
            mycon.Dispose();
            return result;

}
        /// <summary>
        /// 事务操作增删改
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public int ExcuteTran(string sql)
        {
            MySqlConnection mycon = new MySqlConnection(config);
            MySqlCommand mycom = null;
            MySqlTransaction trans = null;
            int result = 0;
            try
            {
                mycon.Open();
                mycom = mycon.CreateCommand();
                mycom.CommandText = sql;

//创建事务  
                trans = mycon.BeginTransaction();
                result = mycom.ExecuteNonQuery();
                //事务提交  
                trans.Commit();
            }
            catch
            {
                //事务回滚  
                trans.Rollback();
            }
            finally
            {
                mycom.Dispose();
                mycon.Close();
                mycon.Dispose();
            }
            return result;
        }  
        /// <summary>
        /// IDataReader、MySqlDataReader 转T实体
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="reader"></param>
        /// <returns></returns>
        private T ExecDataReader<T>(IDataReader reader)
        {
            T obj = default(T);
            try
            {
                Type type = typeof(T);
                obj = (T)Activator.CreateInstance(type);//从当前程序集里面通过反射的方式创建指定类型的对象   
                PropertyInfo[] propertyInfos = type.GetProperties();//获取指定类型里面的所有属性
                foreach (PropertyInfo propertyInfo in propertyInfos)
                {
                    for (int i = 0; i < reader.FieldCount; i++)
                    {
                        string fieldName = reader.GetName(i);
                        if (fieldName.ToLower() == propertyInfo.Name.ToLower())
                        {
                            //object val = reader[propertyInfo.Name];//读取表中某一条记录里面的某一列
                            object val = reader[fieldName];//读取表中某一条记录里面的某一列
                            if (val != null && val != DBNull.Value)
                            {
                                propertyInfo.SetValue(obj, val);
                            }
                            break;
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            return obj;
        }

}
    public static class DataHelper
    {
        /// <summary>
        /// DataTable 转List<T>实体
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static List<T> ToEntity<T>(this DataTable dt) where T : new()
        {
            List<T> list = new List<T>();
            Type info = typeof(T);
            var props = info.GetProperties();
            foreach (DataRow dr in dt.Rows)
            {
                T entity = new T();
                foreach (var pro in props)
                {
                    var propInfo = info.GetProperty(pro.Name);
                    if (dt.Columns.Contains(pro.Name))
                    {
                        propInfo.SetValue(entity, Convert.ChangeType(dr[pro.Name], propInfo.PropertyType), null);
                    }
                }
                list.Add(entity);
            }
            return list;
        }
    }
}

MYSQL连接数据库的更多相关文章

  1. navicat for mysql连接数据库报错1251

    使用Navicat for mysql 连接数据库,报如下错误 原因:数据库安装的是8.0版本,新的mysql采用了新的加密方式,导致连接失败 解决办法:数据库执行如下命令 改密码加密方式:用管理员身 ...

  2. Database学习 - mysql 连接数据库 库操作

    连接数据库 语法格式: mysql -h 服务器IP -P 端口号 -u用户名 -p密码 --prompt 命令提示符 --delimiter 指定分隔符 示例: mysql -h 127.0.0.1 ...

  3. MySql连接数据库和操作(java)

    package org.wxd.weixin.util; import java.sql.Connection;import java.sql.DriverManager;import java.sq ...

  4. MYSQL 连接数据库命令收藏

    一.MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格) C:\>mysql -h localhost -u root -p123 二. ...

  5. mysql连接数据库p的大小写

    命令:mysql -uroot -p -hlocalhost -P3306 -h 用来指定远程主机的IP -P (大写) 用来指定远程主机MYAQL的绑定端口

  6. MySQL 连接数据库

    一.MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格),缺点:密码显示在显示器上,容易泄露. C:\>mysql -h localho ...

  7. PHP MySQL 连接数据库 之 Connect

    连接到一个 MySQL 数据库 在您能够访问并处理数据库中的数据之前,您必须创建到达数据库的连接. 在 PHP 中,这个任务通过 mysql_connect() 函数完成. 语法 mysql_conn ...

  8. MySQL连接数据库报时区错误:java.sql.SQLException: The server time zone value

    连接MySQL数据库时报以下时区错误信息: java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized ...

  9. mysql连接数据库存报下面错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

    输入 mysql -u root 登录 mysql 的时候出现以下错误: ERROR 2002 (HY000): Can't connect to local MySQL server through ...

随机推荐

  1. ksh和bash区别

    一.实践证明,在AIX上用的是ksh,linux上是bash sh或bsh,全名是bourne shell.它最早出现,是标准shell.后两者都兼容它. ksh和bash后续加入了历史记录,交互特性 ...

  2. 计算智能 Computational Intelligence,CI

    计算智能(Computational Intelligence,CI)是借助自然界(生物界)规律的启示,根据其规律,设计出求解问题的算法.智能计算只是一种经验化的计算机思考性程序. 计算智能算法主要包 ...

  3. makeKeyAndVisible的功能

    makeKeyAndVisible的作用 [self.window makeKeyAndVisible] 由于iPhone是单窗口程序,所以也就只有这么一个Window对象,而且是UIWindow,不 ...

  4. hdu 1754 I Hate It (splay tree伸展树)

    hdu 1754 I Hate It 其实我只是来存一下我的splay模板的..请大牛们多多指教 #include<stdio.h> #include<string.h> #i ...

  5. Android UI--自定义ListView(实现下拉刷新+加载更多)

    Android UI--自定义ListView(实现下拉刷新+加载更多) 关于实现ListView下拉刷新和加载更多的实现,我想网上一搜就一堆.不过我就没发现比较实用的,要不就是实现起来太复杂,要不就 ...

  6. 为什么Form.Timer的event handler在Form被Dispose之后还是被调到了?

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:为什么Form.Timer的event handler在Form被Dispose之后还是被调到了?.

  7. Spring BOOT PERFORMANCE

    转自:http://www.alexecollins.com/spring-boot-performance/ 官方优化文档: https://spring.io/blog/2015/12/10/sp ...

  8. ListView多选操作模式详解CHOICE_MODE_MULTIPLE与CHOICE_MODE_MULTIPLE_MODAL

    这篇文章我们将详细的介绍如何实现ListView的多选操作,文中将会纠正在使用ListViewCHOICE_MODE_MULTIPLE或者CHOICE_MODE_MULTIPLE_MODAL时容易犯的 ...

  9. linux ls -l 详解

    转自:http://blog.csdn.net/sjzs5590/article/details/8254527 (原文转自http://hi.baidu.com/yzzcheng/item/1a21 ...

  10. ubuntu安装日志

    默认 桌面有2个文档 一个是示例,我们选择 开始安装Ubuntu 14.10 LTS , 记得在这之前 要按Ctrl+Alt+T 打开终端,输入代码:sudo umount -l /isodevice ...