最近准備寫一個倉庫管理的項目
客戶要求使用C#編寫MySQL存儲數據
為了方便,整理了數據庫操作的工具類
首先在項目App.config 文件下添加節點
<connectionStrings> <add name="constr" connectionString="server=localhost;port=3306;user id=root;password=root;database=car;Charset=utf8;"/> </connectionStrings>
例如:

然后在項目引用中添加MySQL.DAL.dll 類庫


vs版本低的可能找不到這個類庫,,只有去網上下載,然后添加本地引用了
然后編寫工具類:
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using MySql.Data.MySqlClient; /// <summary> /// @author: 房上的貓 /// /// @博客地址: https://www.cnblogs.com/lsy131479/ /// </summary> namespace WMS.DAL { public class MySQLDBHelp { public static string Constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; #region 建立MySql數據庫連接 /// <summary> /// 建立數據庫連接. /// </summary> /// <returns>返回MySqlConnection對象</returns> public MySqlConnection getMySqlCon() { string M_str_sqlcon = Constr;// "server=localhost;port=3306;user id=root;password=root;database=car"; //根據自己的設置 MySqlConnection myCon = new MySqlConnection(M_str_sqlcon); return myCon; } #endregion #region 執行MySqlCommand命令 /// <summary> /// 執行MySqlCommand /// </summary> /// <param name="M_str_sqlstr">SQL語句</param> public int getMySqlCom(string M_str_sqlstr, params MySqlParameter[] parameters) { MySqlConnection mysqlcon = this.getMySqlCon(); mysqlcon.Open(); MySqlCommand mysqlcom = new MySqlCommand(M_str_sqlstr, mysqlcon); mysqlcom.Parameters.AddRange(parameters); int count = mysqlcom.ExecuteNonQuery(); mysqlcom.Dispose(); mysqlcon.Close(); mysqlcon.Dispose(); return count; } #endregion #region 創建MySqlDataReader對象 /// <summary> /// 創建一個MySqlDataReader對象 /// </summary> /// <param name="M_str_sqlstr">SQL語句</param> /// <returns>返回MySqlDataReader對象</returns> public DataTable getMySqlRead(string M_str_sqlstr, params MySqlParameter[] parameters) { MySqlConnection mysqlcon = this.getMySqlCon(); mysqlcon.Open(); MySqlCommand mysqlcom = new MySqlCommand(M_str_sqlstr, mysqlcon); mysqlcom.Parameters.AddRange(parameters); MySqlDataAdapter mda = new MySqlDataAdapter(mysqlcom); DataTable dt = new DataTable(); mda.Fill(dt); mysqlcon.Close(); return dt; } #endregion } }
進行測試:
class Program { static void Main(string[] args) { MySQLDBHelp help = new MySQLDBHelp(); String sql = "select * from insertcar"; MySqlDataReader dr = help.getmysqlread(sql); while (dr.Read()) { Console.WriteLine(dr["tax"].ToString()); } Console.Read(); } }
結果:

最后提供一個利用反射和泛型 可以將datatable 轉為 list集合的工具類
using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace WMS.Common { public class MyTool { /// <summary> /// DataSetToList /// </summary> /// <typeparam name="T">轉換類型</typeparam> /// <param name="dataSet">數據源</param> /// <param name="tableIndex">需要轉換表的索引</param> /// <returns></returns> public List<T> DataTableToList<T>(DataTable dt) { //確認參數有效 if (dt == null ) return null; List<T> list = new List<T>(); for (int i = 0; i < dt.Rows.Count; i++) { //創建泛型對象 T _t = Activator.CreateInstance<T>(); //獲取對象所有屬性 PropertyInfo[] propertyInfo = _t.GetType().GetProperties(); for (int j = 0; j < dt.Columns.Count; j++) { foreach (PropertyInfo info in propertyInfo) { //屬性名稱和列名相同時賦值 if (dt.Columns[j].ColumnName.ToUpper().Equals(info.Name.ToUpper())) { if (dt.Rows[i][j] != DBNull.Value) { info.SetValue(_t, dt.Rows[i][j], null); } else { info.SetValue(_t, null, null); } break; } } } list.Add(_t); } return list; } } }
