一文帶你了解C#操作MySql的方法
更新時間:2023年03月20日 08:41:45 作者:黑夜中的潛行者
工作中大多數(shù)情況下用的都是 MySql 但一直沒有記錄,相關(guān)操作。這篇文章以便 MySql.Data 庫進行MySql操作,使用 C# 執(zhí)行 SQL 語句,造個輪子
代碼介紹
功能包含:
- 創(chuàng)建數(shù)據(jù)庫
- 創(chuàng)建數(shù)據(jù)表
- 批量添加數(shù)據(jù)
- MySql事務(wù)執(zhí)行
- 清表
- 分頁、模糊查詢
代碼實現(xiàn)
創(chuàng)建數(shù)據(jù)庫
public void CreateDatabase(string sqlStr) { string str = $"Server=localhost;User=root;Password=123456;CharSet=UTF8;"; using (MySqlConnection mySqlConnection = new MySqlConnection(mySqlConnection)) { mySqlConnection.Open(); try { MySqlCommand cmd = new MySqlCommand(sqlStr, mySqlConnection); cmd.ExecuteNonQuery(); } catch(Exception e) { Debug.Log(e.Message.ToString()); } finally { mySqlConnection.Close(); } } }
創(chuàng)建數(shù)據(jù)表
private static void CteateDataTable(string sqlStr) { using (MySqlConnection mySqlConnection = new MySqlConnection(mySqlConnectStr)) { mySqlConnection.Open(); MySqlCommand cmd = new MySqlCommand(sqlStr, mySqlConnection); try { cmd.ExecuteNonQuery(); } catch (Exception ex) { throw new Exception(ex.Message); } finally { mySqlConnection.Close(); } } }
查詢數(shù)據(jù)
private static DataTable SelectTable(string sqlStr) { DataTable dt = new DataTable(); using (MySqlConnection mySqlConnection = new MySqlConnection(mySqlConnectStr)) { mySqlConnection.Open(); try { MySqlDataAdapter da = new MySqlDataAdapter(sqlStr, mySqlConnection); da.Fill(dt); return dt; } catch (Exception ex) { throw new Exception(ex.Message); } finally { mySqlConnection.Close(); } } }
事務(wù)
private static bool ExecuteSqlTransaction(string sqlStr) { using (MySqlConnection mySqlConnection = new MySqlConnection(mySqlConnectStr)) { mySqlConnection.Open(); MySqlCommand cmd = mySqlConnection.CreateCommand(); cmd.Connection = mySqlConnection; MySqlTransaction sqlTransaction = mySqlConnection.BeginTransaction(); try { cmd.CommandText = sqlStr; cmd.ExecuteNonQuery(); sqlTransaction.Commit(); sqlTransaction = mySqlConnection.BeginTransaction(); return true; } catch (Exception ex) { sqlTransaction.Rollback(); return false; } finally { mySqlConnection.Close(); } }; }
代碼示例
using MySql.Data.MySqlClient; using Newtonsoft.Json; using NPinyin; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.IO; using System.Text; namespace ConsoleApp1 { internal class Program { private static string mySqlConnectStr = ConfigurationManager.AppSettings["connectionStr"]; static void Main(string[] args) { CreateDatabase("CREATE DATABASE DataBaseName;"); CreateTable(); SQLCMD(); DeleteTableDataAll(); var drugData = SelectTable(@"SELECT * FROM `t_drugs` WHERE t_drugs.drug_name_py LIKE ""%PT%"" LIMIT 1,10;"); List<Drug> drugs = new List<Drug>(); foreach (DataRow item in drugData.Rows) { drugs.Add(new Drug { hospital_no = item["hospital_no"].ToString(), hospital_name = item["hospital_name"].ToString(), drug_id = item["drug_id"].ToString(), drug_name = item["drug_name"].ToString(), drug_type = item["drug_type"].ToString(), drug_short = item["drug_short"].ToString(), sizes = item["sizes"].ToString(), unit = item["unit"].ToString(), price = item["price"].ToString(), money_type = item["money_type"].ToString(), producer = item["producer"].ToString(), dose = item["dose"].ToString(), usage = item["usage"].ToString(), summary = item["summary"].ToString(), ext = item["ext"].ToString(), }); } DataTable projectData = SelectTable(@"SELECT * FROM `t_project` WHERE t_project.item_name_py LIKE ""%PT%"" LIMIT 1,10;"); List<Project> project = new List<Project>(); foreach (DataRow item in projectData.Rows) { project.Add(new Project { hospital_no = item["hospital_no"].ToString(), hospital_name= item["hospital_name"].ToString(), item_id = item["item_id"].ToString(), item_name = item["item_name"].ToString(), item_type = item["item_type"].ToString(), item_short = item["item_short"].ToString(), sizes = item["sizes"].ToString(), unit = item["unit"].ToString(), price = item["price"].ToString(), money_type = item["money_type"].ToString(), ext = item["ext"].ToString(), }); } Console.ReadKey(); } public void CreateDatabase(string sqlStr) { string str = $"Server=localhost;User=root;Password=123456;CharSet=UTF8;"; using (MySqlConnection mySqlConnection = new MySqlConnection(mySqlConnection)) { mySqlConnection.Open(); try { MySqlCommand cmd = new MySqlCommand(sqlStr, mySqlConnection); cmd.ExecuteNonQuery(); } catch(Exception e) { Debug.Log(e.Message.ToString()); } finally { mySqlConnection.Close(); } } } private static DataTable SelectTable(string sqlStr) { DataTable dt = new DataTable(); using (MySqlConnection mySqlConnection = new MySqlConnection(mySqlConnectStr)) { mySqlConnection.Open(); try { MySqlDataAdapter da = new MySqlDataAdapter(sqlStr, mySqlConnection); da.Fill(dt); return dt; } catch (Exception ex) { throw new Exception(ex.Message); } finally { mySqlConnection.Close(); } } } /// <summary> /// 執(zhí)行 插入藥品、項目數(shù)據(jù) /// </summary> private static void SQLCMD() { #region 藥品 var drugjsonPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"drug.json"); var drugJsonStr = File.ReadAllText(drugjsonPath); Rootobject<List<Drug>> drugs = JsonConvert.DeserializeObject<Rootobject<List<Drug>>>(drugJsonStr); string drugSql = @"INSERT INTO T_drugs (drug_id,drug_name,drug_type,sizes,unit,price,money_type,producer) VALUE "; foreach (var drug in drugs.data) { drugSql += $"(\"{drug.drug_id}\",\"{drug.drug_name}\",\"{drug.drug_type}\",\"{drug.sizes}\",\"{drug.unit}\",\"{drug.price}\",\"{drug.money_type}\",\"{drug.producer}\"),"; } drugSql = $"{drugSql.Remove(drugSql.Length - 1, 1)};"; if (ExecuteSqlTransaction(drugSql)) { Console.WriteLine("執(zhí)行成功!"); } else { Console.WriteLine("執(zhí)行失敗!"); } #endregion #region 項目 var projectjsonPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"project.json"); var projectJsonStr = File.ReadAllText(projectjsonPath); Rootobject<List<Project>> projects = JsonConvert.DeserializeObject<Rootobject<List<Project>>>(projectJsonStr); string projectSql = @"INSERT INTO T_project (item_id,item_name,unit,price) VALUE "; foreach (var project in projects.data) { projectSql += $"(\"{project.item_id}\",\"{project.item_name}\",\"{project.unit}\",\"{project.price}\"),"; } projectSql = $"{projectSql.Remove(projectSql.Length - 1, 1)};"; if (ExecuteSqlTransaction(projectSql)) { Console.WriteLine("執(zhí)行成功!"); } else { Console.WriteLine("執(zhí)行失?。?); } #endregion } /// <summary> /// 創(chuàng)建 藥品、項目表 /// </summary> private static void CreateTable() { string t_drugSql = @"USE xzd; CREATE TABLE IF NOT EXISTS T_drugs ( `hospital_no` VARCHAR(20), `hospital_name` VARCHAR(50), `drug_id` VARCHAR(50), `drug_name` VARCHAR(50), `drug_name_py` VARCHAR(50), `drug_type` VARCHAR(10), `drug_short` VARCHAR(10), `sizes` VARCHAR(10), `unit` VARCHAR(10), `price` VARCHAR(10), `money_type` VARCHAR(50), `producer` VARCHAR(100), `dose` VARCHAR(10), `usage` VARCHAR(10), `summary` VARCHAR(50), `ext` VARCHAR(50) )ENGINE=INNODB DEFAULT CHARSET=utf8;"; string t_project = @"USE xzd; CREATE TABLE IF NOT EXISTS T_project ( `hospital_no` VARCHAR(20), `hospital_name` VARCHAR(50), `item_id` VARCHAR(50), `item_name` VARCHAR(50), `item_name_py` VARCHAR(50), `item_type` VARCHAR(10), `item_short` VARCHAR(10), `sizes` VARCHAR(10), `unit` VARCHAR(30), `price` VARCHAR(10), `money_type` VARCHAR(50), `ext` VARCHAR(50) )ENGINE=INNODB DEFAULT CHARSET=utf8;"; CteateDataTable(t_drugSql); CteateDataTable(t_project); } /// <summary> /// 執(zhí)行創(chuàng)建表sql /// </summary> /// <param name="sqlStr"></param> private static void CteateDataTable(string sqlStr) { using (MySqlConnection mySqlConnection = new MySqlConnection(mySqlConnectStr)) { mySqlConnection.Open(); MySqlCommand cmd = new MySqlCommand(sqlStr, mySqlConnection); try { cmd.ExecuteNonQuery(); } catch (Exception ex) { throw new Exception(ex.Message); } finally { mySqlConnection.Close(); } } } /// <summary> /// mysql事務(wù) /// </summary> /// <param name="sqlStr"></param> /// <exception cref="Exception"></exception> private static bool ExecuteSqlTransaction(string sqlStr) { using (MySqlConnection mySqlConnection = new MySqlConnection(mySqlConnectStr)) { mySqlConnection.Open(); MySqlCommand cmd = mySqlConnection.CreateCommand(); cmd.Connection = mySqlConnection; MySqlTransaction sqlTransaction = mySqlConnection.BeginTransaction(); try { cmd.CommandText = sqlStr; cmd.ExecuteNonQuery(); sqlTransaction.Commit(); sqlTransaction = mySqlConnection.BeginTransaction(); return true; } catch (Exception ex) { sqlTransaction.Rollback(); return false; } finally { mySqlConnection.Close(); } }; } /// <summary> /// 刪除表所有數(shù)據(jù) /// </summary> /// <returns></returns> private static bool DeleteTableDataAll() { string sqlStr = @"DELETE FROM T_drugs; DELETE FROM T_project;"; using (MySqlConnection mySqlConnection = new MySqlConnection(mySqlConnectStr)) { mySqlConnection.Open(); MySqlCommand cmd = new MySqlCommand(sqlStr, mySqlConnection); try { cmd.ExecuteNonQuery(); return true; } catch (Exception ex) { return false; throw new Exception(ex.Message); } finally { mySqlConnection.Close(); } } } } #region 實體 /// <summary> /// 包裝類 /// </summary> /// <typeparam name="T"></typeparam> public class Rootobject<T> { public string code { get; set; } public T data { get; set; } } /// <summary> /// 藥品 /// </summary> public class Drug { public string hospital_no { get; set; } public string hospital_name { get; set; } public string drug_id { get; set; } public string drug_name { get; set; } public string drug_type { get; set; } public string drug_short { get; set; } public string sizes { get; set; } public string unit { get; set; } public string price { get; set; } public string money_type { get; set; } public string producer { get; set; } public string dose { get; set; } public string usage { get; set; } public string summary { get; set; } public string ext { get; set; } } /// <summary> /// 項目 /// </summary> public class Project { public string hospital_no { get; set; } public string hospital_name { get; set; } public string item_id { get; set; } public string item_name { get; set; } public string item_type { get; set; } public string item_short { get; set; } public string sizes { get; set; } public string unit { get; set; } public string price { get; set; } public string money_type { get; set; } public string ext { get; set; } } #endregion }
到此這篇關(guān)于一文帶你了解C#操作MySql的方法的文章就介紹到這了,更多相關(guān)C#操作MySql內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#中通過Command模式實現(xiàn)Redo/Undo方案
這篇文章介紹了C#中通過Command模式實現(xiàn)Redo/Undo方案的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06C#中FileSystemWatcher類實現(xiàn)監(jiān)控文件夾
在C#中,如果你想要監(jiān)控一個文件夾內(nèi)文件的變動情況,比如文件的創(chuàng)建、刪除、修改等,你可以使用FileSystemWatcher類,下面就來介紹一下FileSystemWatcher監(jiān)控的使用,感興趣的可以了解一下2024-03-03