C#--MySQL數據庫基本操作(增、刪、改、查)


 寫在前面:

 常用數據庫:

 SQLserver:https://www.cnblogs.com/mexihq/p/11636785.html

 Oracle:https://www.cnblogs.com/mexihq/p/11700741.html

 MySQL:https://www.cnblogs.com/mexihq/p/12463423.html

 Access:https://www.cnblogs.com/mexihq/p/12466970.html

在日常的工作中,通常一個項目會大量用的數據庫的各種基本操作,因此小編幾個常見的數據庫的操作封裝成了一個dll方便后續的開發使用。本文則主要是記錄了C#對MySQL的連接、增、刪、改、查的基本操作,如有什么問題還請各位大佬指教。后續也將對其他幾個常用的數據庫進行相應的整理。話不多說,直接開始碼代碼。

引用:

MySQL的引用需要去手動下載

using MySql.Data.MySqlClient;  //MySQL引用集
using System.Data; //DataSet引用集

  

先聲明一個MySqlConnection 便於后續使用。

private MySqlConnection mysql_con;

 

MySQL打開:

/// <summary>
/// MySQL open
/// </summary>
/// <param name="link">link statement</param>
/// <returns>Success:success; Fail:reason</returns>
public string MySQL_Open(string link)
{
  try
  {
    mysql_con = new MySqlConnection(link);
    mysql_con.Open();
    return "success";
  }
  catch (Exception ex)
  {
    return ex.Message;
  }
}

MySQL關閉:

/// <summary>
/// MySQL close
/// </summary>
/// <returns>Success:success Fail:reason</returns>
public string MySQL_Close()
{
  try
  {
    if (mysql_con == null)
    {
      return "No database connection";
    }
    if (mysql_con.State == ConnectionState.Open || mysql_con.State == ConnectionState.Connecting)
    {
      mysql_con.Close();
      mysql_con.Dispose();
    }
    else
    {
      if (mysql_con.State == ConnectionState.Closed)
      {
        return "success";
      }
      if (mysql_con.State == ConnectionState.Broken)
      {
        return "ConnectionState:Broken";
      }
    }
    return "success";
  }
  catch (Exception ex)
  {
    return ex.Message;
  }
}

MySQL的增刪改:

/// <summary>
/// MySQL insert,delete,update
/// </summary>
/// <param name="sql">insert,delete,update statement</param>
/// <returns>Success:success + Number of affected rows; Fail:reason</returns>
public string MySQL_Insdelupd(string sql)
{
  try
  {
    int num = 0;
    if (mysql_con == null)
    {
      return "Please open the database connection first";
    }
    if (mysql_con.State == ConnectionState.Open)
    {
      MySqlCommand sqlCommand = new MySqlCommand(sql, mysql_con);
      num = sqlCommand.ExecuteNonQuery();
    }
    else
    {
      if (mysql_con.State == ConnectionState.Closed)
      {
        return "Database connection closed";
      }
      if (mysql_con.State == ConnectionState.Broken)
      {
        return "Database connection is destroyed";
      }
      if (mysql_con.State == ConnectionState.Connecting)
      {
        return "The database is in connection";
      }
    }
    return "success" + num;
  }
  catch (Exception ex)
  {
    return ex.Message.ToString();
  }
}

MySQL的查:

/// <summary>
/// MySQL select
/// </summary>
/// <param name="sql">select statement</param>
/// <param name="record">Success:success; Fail:reason</param>
/// <returns>select result</returns>
public DataSet MySQL_Select(string sql, out string record)
{
  try
  {
    //儲存數據的工具初始化
    DataSet dataSet = new DataSet();
    if (mysql_con == null)
    {
      record = "Please open the database connection first";
      return dataSet;
    }
    if (mysql_con.State == ConnectionState.Open)
    {
      MySqlDataAdapter sqlDataAdapter = new MySqlDataAdapter(sql, mysql_con);
      sqlDataAdapter.Fill(dataSet, "sample");
      sqlDataAdapter.Dispose();
      record = "success";
      return dataSet;
    }
    if (mysql_con.State == ConnectionState.Closed)
    {
      record = "Database connection closed";
      return dataSet;
    }
    if (mysql_con.State == ConnectionState.Broken)
    {
      record = "Database connection is destroyed";
      return dataSet;
    }
    if (mysql_con.State == ConnectionState.Connecting)
    {
      record = "The database is in connection";
      return dataSet;
    }
    record = "ERROR";
    return dataSet;
  }
  catch (Exception ex)
  {
    DataSet dataSet = new DataSet();
    record = ex.Message.ToString();
    return dataSet;
  }
}

 小編發現以上這種封裝方式還是很麻煩,每次對MySQL進行增刪改查的時候還得先打開數據庫,最后還要關閉,實際運用起來比較麻煩。因此對上面兩個增刪改查的方法進行了重載,在每次進行操作時都先打開數據庫,然后關閉數據庫。

/// <summary>
/// MySQL insert,delete,update
/// </summary>
/// <param name="sql">insert,delete,update statement</param>
/// <param name="link">link statement</param>
/// <returns>Success:success + Number of affected rows; Fail:reason</returns>
public string MySQL_Insdelupd(string sql, string link)
{
  try
  {
    int num = 0;
    using (MySqlConnection con = new MySqlConnection(link))
    {
      con.Open();
      //操作數據庫的工具SqlCommand
      MySqlCommand cmd = new MySqlCommand(sql, con); //(操作語句和鏈接工具)
      num = cmd.ExecuteNonQuery(); //執行操作返回影響行數
      con.Close();
      return "success" + num;
    }
  }
  catch (Exception ex)
  {
    return ex.Message.ToString();
  }
}

 

/// <summary>
/// MySQL select
/// </summary>
/// <param name="sql">select statement</param>
/// <param name="link">link statement</param>
/// <param name="record">Success:success; Fail:reason</param>
/// <returns>select result</returns>
public DataSet MySQL_Select(string sql, string link, out string record)
{
  try
  {
    //儲存數據的工具初始化
    DataSet ds = new DataSet();
    //相當於鏈接數據庫的一個工具類(連接字符串)
    using (MySqlConnection con = new MySqlConnection(link))
    {
      con.Open(); //打開
      //用SqlConnection工具鏈接數據庫,在通過sql查詢語句查詢結果現存入sql適配器
      MySqlDataAdapter sda = new MySqlDataAdapter(sql, con); //(查詢語句和連接工具)
      sda.Fill(ds, "sample"); //將適配器數據存入DataSet工具中
      con.Close(); //用完關閉SqlConnection工具
      sda.Dispose(); //手動釋放SqlDataAdapter
      record = "success";
      return ds;
    }
  }
  catch (Exception ex)
  {
    DataSet dataSet = new DataSet();
    record = ex.Message.ToString();
    return dataSet;
  }
}

 


免責聲明!

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



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