- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Data;
- using System.Configuration;
- using System.Windows.Forms;
- using MySql.Data.MySqlClient;
- using System.Xml;
- using MySql.Data;
- /*
- * Author: Lee
- * Time: 2015-04-08
- * Info: 数据库封装操作类
- */
- namespace Common
- {
- public class DbManager
- {
- //连接用的字符串
- private string connStr;
- public string ConnStr
- {
- get { return this.connStr; }
- set { this.connStr = value; }
- }
- private DbManager() { }
- //DbManager单实例
- private static DbManager _instance = null;
- public static DbManager Ins
- {
- get { if (_instance == null) { _instance = new DbManager(); } return _instance; }
- }
- /// <summary>
- /// 需要获得多个结果集的时候用该方法,返回DataSet对象。
- /// </summary>
- /// <param name="sql语句"></param>
- /// <returns></returns>
- public DataSet ExecuteDataSet(string sql, params MySqlParameter[] paras)
- {
- using (MySqlConnection con = new MySqlConnection(ConnStr))
- {
- //数据适配器
- MySqlDataAdapter sqlda = new MySqlDataAdapter(sql, con);
- sqlda.SelectCommand.Parameters.AddRange(paras);
- DataSet ds = new DataSet();
- sqlda.Fill(ds);
- return ds;
- //不需要打开和关闭链接.
- }
- }
- /// <summary>
- /// 获得单个结果集时使用该方法,返回DataTable对象。
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public DataTable ExcuteDataTable(string sql, params MySqlParameter[] paras)
- {
- using (MySqlConnection con = new MySqlConnection(ConnStr))
- {
- MySqlDataAdapter sqlda = new MySqlDataAdapter(sql, con);
- sqlda.SelectCommand.Parameters.AddRange(paras);
- DataTable dt = new DataTable();
- sqlda.Fill(dt);
- return dt;
- }
- }
- /// <summary>
- /// 执行一条计算查询结果语句,返回查询结果(object)。
- /// </summary>
- /// <param name="SQLString">计算查询结果语句</param>
- /// <returns>查询结果(object)</returns>
- public object ExecuteScalar(string SQLString, params MySqlParameter[] paras)
- {
- using (MySqlConnection connection = new MySqlConnection(ConnStr))
- {
- using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
- {
- try
- {
- connection.Open();
- cmd.Parameters.AddRange(paras);
- object obj = cmd.ExecuteScalar();
- if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
- {
- return null;
- }
- else
- {
- return obj;
- }
- }
- catch (MySql.Data.MySqlClient.MySqlException e)
- {
- connection.Close();
- throw e;
- }
- }
- }
- }
- /// <summary>
- /// 执行Update,Delete,Insert操作
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public int ExecuteNonquery(string sql, params MySqlParameter[] paras)
- {
- using (MySqlConnection con = new MySqlConnection(ConnStr))
- {
- MySqlCommand cmd = new MySqlCommand(sql, con);
- cmd.Parameters.AddRange(paras);
- con.Open();
- return cmd.ExecuteNonQuery();
- }
- }
- /// <summary>
- /// 调用存储过程 无返回值
- /// </summary>
- /// <param name="procname">存储过程名</param>
- /// <param name="paras">sql语句中的参数数组</param>
- /// <returns></returns>
- public int ExecuteProcNonQuery(string procname, params MySqlParameter[] paras)
- {
- using (MySqlConnection con = new MySqlConnection(ConnStr))
- {
- MySqlCommand cmd = new MySqlCommand(procname, con);
- cmd.CommandType = CommandType.StoredProcedure;
- cmd.Parameters.AddRange(paras);
- con.Open();
- return cmd.ExecuteNonQuery();
- }
- }
- /// <summary>
- /// 存储过程 返回Datatable
- /// </summary>
- /// <param name="procname"></param>
- /// <param name="paras"></param>
- /// <returns></returns>
- public DataTable ExecuteProcQuery(string procname, params MySqlParameter[] paras)
- {
- using (MySqlConnection con = new MySqlConnection(ConnStr))
- {
- MySqlCommand cmd = new MySqlCommand(procname, con);
- cmd.CommandType = CommandType.StoredProcedure;
- MySqlDataAdapter sqlda = new MySqlDataAdapter(procname, con);
- sqlda.SelectCommand.Parameters.AddRange(paras);
- DataTable dt = new DataTable();
- sqlda.Fill(dt);
- return dt;
- }
- }
- /// <summary>
- /// 多语句的事物管理
- /// </summary>
- /// <param name="cmds">命令数组</param>
- /// <returns></returns>
- public bool ExcuteCommandByTran(params MySqlCommand[] cmds)
- {
- using (MySqlConnection con = new MySqlConnection(ConnStr))
- {
- con.Open();
- MySqlTransaction tran = con.BeginTransaction();
- foreach (MySqlCommand cmd in cmds)
- {
- cmd.Connection = con;
- cmd.Transaction = tran;
- cmd.ExecuteNonQuery();
- }
- tran.Commit();
- return true;
- }
- }
- ///分页
- public DataTable ExcuteDataWithPage(string sql, ref int totalCount, params MySqlParameter[] paras)
- {
- using (MySqlConnection con = new MySqlConnection(ConnStr))
- {
- MySqlDataAdapter dap = new MySqlDataAdapter(sql, con);
- DataTable dt = new DataTable();
- dap.SelectCommand.Parameters.AddRange(paras);
- dap.Fill(dt);
- MySqlParameter ttc = dap.SelectCommand.Parameters["@totalCount"];
- if (ttc != null)
- {
- totalCount = Convert.ToInt32(ttc.Value);
- }
- return dt;
- }
- }
- }
- }
- //C#调用例子
- DbManager.Ins.ConnStr = "Mysql地址 密码等"
- string sql = @"select * from log_account where (createtime between @startTime and @endTime) and (serverinfo like @serverinfo)";
- List<MySqlParameter> Paramter = new List<MySqlParameter>();
- Paramter.Add(new MySqlParameter("@startTime", startTime));
- Paramter.Add(new MySqlParameter("@endTime", endTime));
- Paramter.Add(new MySqlParameter("@serverinfo", (ConfManager.Ins.currentConf.serverid + "-%")));
- DataTable data = DbManager.Ins.ExcuteDataTable(sql, Paramter.ToArray());