使用之前请先引用mysql.data.dll
简单的一些增删改操作,请看下面一篇文章
MyDb.cs 类支持多线程操作,里面使用 Mutex 互斥实现操作数据库时把线程挂起来同步数据
里面用到啦一个记录日志的功能,可以到下面地址下载
如果不需要记录using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Threading;
namespace Ank.Class
{
class MyDb
{
private static MyDb db = null;
private static Mutex m_mutex = null;//多线程时互斥锁
private MySqlConnection m_conn;
private string connstr = "";
private string _sql = "";
private Log m_log = null;
private MySqlCommand m_cmd = null;
private MySqlDataReader m_reader = null;
private MyDb(string host, string user, string pwd, string database)
{
try
{
m_log = Log.getInstance();
m_mutex = new Mutex();
this.connstr = "server=" + host + ";user id=" + user + ";password=" + pwd + ";database=" + database + ";charset=utf8mb4;"; //根据自己的设置
m_conn = new MySqlConnection(this.connstr);
//打开数据库连接
m_conn.Open();
}
catch (Exception ex)
{
this.errorMsg(ex);
throw;
}
}
static public MyDb getInstance(string host, string user, string pwd, string database)
{
if (db == null)
{
db = new MyDb(host, user, pwd, database);
}
return db;
}
/**
* 取数据表主键
**/
private string getPrimary(string tablename = "")
{
string key = "";
try
{
m_cmd = new MySqlCommand("SHOW COLUMNS FROM " + tablename, m_conn);
m_reader = m_cmd.ExecuteReader();
//如果有数据就输出
if (m_reader.HasRows)
{
//逐行读取数据输出
while (m_reader.Read())
{
string zizeng = m_reader.GetString("Extra");
if (zizeng == "auto_incr