最近准备写一个仓库管理的项目

  客户要求使用C#编写MySQL存储数据

  为了方便,整理了数据库操作的工具类

首先在项目App.config 文件下添加节点

  1. <connectionStrings>
  2. <add name="constr" connectionString="server=localhost;port=3306;user id=root;password=root;database=car;Charset=utf8;"/>
  3. </connectionStrings>
  1.  

例如:

然后在项目引用中添加MySQL.DAL.dll  类库

vs版本低的可能找不到这个类库,,只有去网上下载,然后添加本地引用了

然后编写工具类:

  1.  
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Configuration;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using MySql.Data.MySqlClient;
  9.  
  10. /// <summary>
  11. /// @author: 房上的猫
  12. ///
  13. /// @博客地址: https://www.cnblogs.com/lsy131479/
  14. /// </summary>
  15.  
  16. namespace WMS.DAL
  17. {
  18. public class MySQLDBHelp
  19. {
  20. public static string Constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
  21.  
  22. #region 建立MySql数据库连接
  23. /// <summary>
  24. /// 建立数据库连接.
  25. /// </summary>
  26. /// <returns>返回MySqlConnection对象</returns>
  27. public MySqlConnection getMySqlCon()
  28. {
  29. string M_str_sqlcon = Constr;// "server=localhost;port=3306;user id=root;password=root;database=car"; //根据自己的设置
  30. MySqlConnection myCon = new MySqlConnection(M_str_sqlcon);
  31. return myCon;
  32. }
  33. #endregion
  34.  
  35. #region 执行MySqlCommand命令
  36. /// <summary>
  37. /// 执行MySqlCommand
  38. /// </summary>
  39. /// <param name="M_str_sqlstr">SQL语句</param>
  40. public int getMySqlCom(string M_str_sqlstr, params MySqlParameter[] parameters)
  41. {
  42. MySqlConnection mysqlcon = this.getMySqlCon();
  43. mysqlcon.Open();
  44. MySqlCommand mysqlcom = new MySqlCommand(M_str_sqlstr, mysqlcon);
  45. mysqlcom.Parameters.AddRange(parameters);
  46. int count = mysqlcom.ExecuteNonQuery();
  47. mysqlcom.Dispose();
  48. mysqlcon.Close();
  49. mysqlcon.Dispose();
  50. return count;
  51. }
  52. #endregion
  53.  
  54. #region 创建MySqlDataReader对象
  55. /// <summary>
  56. /// 创建一个MySqlDataReader对象
  57. /// </summary>
  58. /// <param name="M_str_sqlstr">SQL语句</param>
  59. /// <returns>返回MySqlDataReader对象</returns>
  60. public DataTable getMySqlRead(string M_str_sqlstr, params MySqlParameter[] parameters)
  61. {
  62. MySqlConnection mysqlcon = this.getMySqlCon();
  63. mysqlcon.Open();
  64. MySqlCommand mysqlcom = new MySqlCommand(M_str_sqlstr, mysqlcon);
  65. mysqlcom.Parameters.AddRange(parameters);
  66. MySqlDataAdapter mda = new MySqlDataAdapter(mysqlcom);
  67. DataTable dt = new DataTable();
  68. mda.Fill(dt);
  69. mysqlcon.Close();
  70. return dt;
  71. }
  72. #endregion
  73. }
  74. }
  1.  

进行测试:

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. MySQLDBHelp help = new MySQLDBHelp();
  6.  
  7. String sql = "select * from insertcar";
  8. MySqlDataReader dr = help.getmysqlread(sql);
  9. while (dr.Read())
  10. {
  11. Console.WriteLine(dr["tax"].ToString());
  12. }
  13.  
  14. Console.Read();
  15. }
  16. }

结果:

最后提供一个利用反射和泛型       可以将datatable  转为 list集合的工具类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.SqlClient;
  5. using System.Linq;
  6. using System.Reflection;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9.  
  10. namespace WMS.Common
  11. {
  12. public class MyTool
  13. {
  14. /// <summary>
  15. /// DataSetToList
  16. /// </summary>
  17. /// <typeparam name="T">转换类型</typeparam>
  18. /// <param name="dataSet">数据源</param>
  19. /// <param name="tableIndex">需要转换表的索引</param>
  20. /// <returns></returns>
  21. public List<T> DataTableToList<T>(DataTable dt)
  22. {
  23. //确认参数有效
  24. if (dt == null )
  25. return null;
  26.  
  27. List<T> list = new List<T>();
  28.  
  29. for (int i = ; i < dt.Rows.Count; i++)
  30. {
  31. //创建泛型对象
  32. T _t = Activator.CreateInstance<T>();
  33. //获取对象所有属性
  34. PropertyInfo[] propertyInfo = _t.GetType().GetProperties();
  35. for (int j = ; j < dt.Columns.Count; j++)
  36. {
  37. foreach (PropertyInfo info in propertyInfo)
  38. {
  39. //属性名称和列名相同时赋值
  40. if (dt.Columns[j].ColumnName.ToUpper().Equals(info.Name.ToUpper()))
  41. {
  42. if (dt.Rows[i][j] != DBNull.Value)
  43. {
  44. info.SetValue(_t, dt.Rows[i][j], null);
  45. }
  46. else
  47. {
  48. info.SetValue(_t, null, null);
  49. }
  50. break;
  51. }
  52. }
  53. }
  54. list.Add(_t);
  55. }
  56. return list;
  57. }
  58. }
  59. }

C#连接操作MySQL数据库详细步骤 帮助类等(二次改进版)的更多相关文章

  1. java连接mysql数据库详细步骤解析

    java连接mysql数据库详细步骤解析      第一步:下载一个JDBC驱动包,例如我用的是:mysql-connector-java-5.1.17-bin.jar      第二步:导入下载的J ...

  2. 原生Jdbc操作Mysql数据库开发步骤

    原生Jdbc操作Mysql数据库开发步骤 原生的Jdbc就是指,不使用任何框架,仅用java.sql包下的方法实现数据库查询等的操作. 下面是开发步骤:        1.导入数据库驱动包       ...

  3. Python操作MySQL数据库(步骤教程)

    我们经常需要将大量数据保存起来以备后续使用,数据库是一个很好的解决方案.在众多数据库中,MySQL数据库算是入门比较简单.语法比较简单,同时也比较实用的一个.在这篇博客中,将以MySQL数据库为例,介 ...

  4. Python MySQLdb模块连接操作mysql数据库实例_python

    mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法.python操作数据库需要安装一个第三方的模块,在http://mysql ...

  5. ASP.NET 连接MySQL数据库 详细步骤

    ASP.NET默认的数据库是MS SQL Server,微软的数据库产品.事实上,如果不计成本因素的话,Windows Server + IIS + MS SQL Server + ASP.NET是网 ...

  6. 树莓派开发笔记(十七):树莓派4B+上Qt多用户连接操作Mysql数据库同步(单条数据悲观锁)

    前言   安装了mysq数据库,最终时为了实现在一个树莓派上实现多用户多进程操作的同步问题,避免数据并发出现一些错误,本篇安装了远程服务并且讲述了使用Qt进行悲观锁for update操作,命令行进行 ...

  7. C# 连接操作MYSQL 数据库_02

    using MySql.Data.MySqlclient; // 引进MYSQL 库 // C# 连接 MYSQL 数据库更好的方法 void func_02() { string str_conn_ ...

  8. Linux 上通过binlog文件 恢复mysql 数据库详细步骤

    一.binlog 介绍 服务器的二进制日志记录着该数据库的所有增删改的操作日志(前提是要在自己的服务器上开启binlog),还包括了这些操作的执行时间.为了显示这些二进制内容,我们可以使用mysqlb ...

  9. python 连接操作mysql数据库

    开发数据库程序流程: 1.创建connection对象,获取cursor 2.使用cursor执行SQL 3.使用cursor获取数据.判断执行状态 4.提交事务 或者 回滚事务 import: 数据 ...

随机推荐

  1. [转载]Getting Started with ASP.NET vNext and Visual Studio 14

    说在转载之前的话:ASP.NET框架之前不断做大,而vNext则是从头开始,对ASP.NET框架进行拆分并瘦身,面对不同的需求而更加灵活,各个拆分出来的模块更加轻量.vNext的出现,对ASP.NET ...

  2. C# 定时执行方法: System.Timers.Timer用法示例

    System.Timers.Timer t = new System.Timers.Timer(5000); //设置时间间隔为5秒        private void Form1_Load(ob ...

  3. RGB, YUV及相关标准

    最近在一次排查问题的过程中发现色彩空间及色彩空间转换也有很多技术细节,而理清这些细节能帮助我们更准确的定位视频方面的问题. 1. 色彩空间 色彩空间一词源于英文的“Color Space”,色彩学中, ...

  4. php 获取唯一字符串与文件扩展名函数

    /** * 生成唯一字符串 * @return string */ function getUniqueStr(){ return md5(uniqid(microtime(true),true)); ...

  5. JS设计模式——7.工厂模式(示例-XHR)

    XHR工厂 基本实现 var AjaxHandler = new Interface('AjaxHandler', ['request', 'createXHR']); var SimpleHandl ...

  6. java map遍历并删除特定值

    删除map中包含password和username的键值对 若是在map中直接删除,会指针错误 Iterator<Map.Entry<String,Object>> it = ...

  7. 深度解析:python之浅拷贝与深拷贝

    深度解析python之浅拷贝与深拷贝 本文包括知识点: 1.copy与deepcopy 2.可变类型与不可变类型 1.copy与deepcopy 在日常python编码过程中,经常会遇见变量的赋值.这 ...

  8. 金融数据分析 - 利用 Tushare Pro 平台 获取金融数据

    Tushare金融大数据开放社区 免费提供各类金融数据和区块链数据 , 助力智能投资与创新型投资. 详见 https://tushare.pro/

  9. python网络编程--线程join和Daemon(守护进程)

    一:什么情况下使用join join([timeout])调用join函数会使得主调线程阻塞,直到被调用线程运行结束或超时. 参数timeout是一个数值类型,用来表示超时时间,如果未提供该参数,那么 ...

  10. XP远程连接Win10,提示【远程计算机需要网络级别身份验证,而您的计算机不支持该验证】

    最近电脑安装了Win10系统,在办公室可以通过其他电脑远程,但是回去后使用自己的电脑(XP系统)进行远程提示失败, 提示[远程计算机需要网络级别身份验证,而您的计算机不支持该验证],然后上网查找资料, ...