C#連接操作MySQL數據庫詳細步驟 幫助類等(二次改進版)


 

 

 

 

最近准備寫一個倉庫管理的項目

  客戶要求使用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;
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM