using System;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
namespace DBUtility
{
///
/// 基于MySQL的数据层基类
///
///
/// 参考于MS Petshop 4.0
///
public abstract class MySqlHelper
{
#region 数据库连接字符串
public static readonly string DBConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnectionString"].ToString();
#endregion
#region PrepareCommand
///
/// Command预处理
///
/// MySqlConnection对象
/// MySqlTransaction对象,可为null
/// MySqlCommand对象
/// CommandType,存储过程或命令行
/// SQL语句或存储过程名
/// MySqlCommand参数数组,可为null
private static void PrepareCommand(MySqlConnection conn, MySqlTransaction trans, MySqlCommand cmd, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms)
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = cmdType;
if (cmdParms != null)
{
foreach (MySqlParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
}
#endregion
#region ExecuteNonQuery
///
/// 执行命令
///
/// 数据库连接字符串
/// 命令类型(存储过程或SQL语句)
/// SQL语句或存储过程名
/// MySqlCommand参数数组
/// 返回受引响的记录行数
public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
{
MySqlCommand cmd = new MySqlCommand();
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
PrepareCommand(conn, null, cmd, cmdType, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
}
///
/// 执行命令
///
/// Connection对象
/// 命令类型(存储过程或SQL语句)
/// SQL语句或存储过程名
/// MySqlCommand参数数组
/// 返回受引响的记录行数
public static int ExecuteNonQuery(MySqlConnection conn, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
{
MySqlCommand cmd = new MySqlCommand();
PrepareCommand(conn, null, cmd, cmdType, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
///
/// 执行事务
///
/// MySqlTransaction对象
/// 命令类型(存储过程或SQL语句)
/// SQL语句或存储过程名
/// MySqlCommand参数数组
/// 返回受引响的记录行数
public static int ExecuteNonQuery(MySqlTransaction trans, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
{
MySqlCommand cmd = new MySqlCommand();
PrepareCommand(trans.Connection, trans, cmd, cmdType, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
#endregion
#region ExecuteScalar
///
/// 执行命令,返回第一行第一列的值
///
/// 数据库连接字符串
/// 命令类型(存储过程或SQL语句)
/// SQL语句或存储过程名
/// MySqlCommand参数数组
/// 返回Object对象
public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
{
MySqlCommand cmd = new MySqlCommand();
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
PrepareCommand(connection, null, cmd, cmdType, cmdText, cmdParms);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
}
///
/// 执行命令,返回第一行第一列的值
///
/// 数据库连接字符串
/// 命令类型(存储过程或SQL语句)
/// SQL语句或存储过程名
/// MySqlCommand参数数组
/// 返回Object对象
public static object ExecuteScalar(MySqlConnection conn, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
{
MySqlCommand cmd = new MySqlCommand();
PrepareCommand(conn, null, cmd, cmdType, cmdText, cmdParms);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
#endregion
#region ExecuteReader
///
/// 执行命令或存储过程,返回MySqlDataReader对象
/// 注意MySqlDataReader对象使用完后必须Close以释放MySqlConnection资源
///
/// 数据库连接字符串
/// 命令类型(存储过程或SQL语句)
/// SQL语句或存储过程名
/// MySqlCommand参数数组
///
public static MySqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
{
MySqlCommand cmd = new MySqlCommand();
MySqlConnection conn = new MySqlConnection(connectionString);
try
{
PrepareCommand(conn, null, cmd, cmdType, cmdText, cmdParms);
MySqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return dr;
}
catch
{
conn.Close();
throw;
}
}
#endregion
#region ExecuteDataSet
///
/// 执行命令或存储过程,返回DataSet对象
///
/// 数据库连接字符串
/// 命令类型(存储过程或SQL语句)
/// SQL语句或存储过程名
/// MySqlCommand参数数组(可为null值)
///
public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
{
MySqlCommand cmd = new MySqlCommand();
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
PrepareCommand(conn, null, cmd, cmdType, cmdText, cmdParms);
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
conn.Close();
cmd.Parameters.Clear();
return ds;
}
}
#endregion
}//end class
}
using System;
using System.Collections;
using System.Configuration;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Data;
namespace DBTranslater
{
///
///SQLHelper 的摘要说明
///
public abstract class MySqlHelper
{
//数据库连接字符串
public static string Conn = "Database='mydb';Data Source='localhost';User Id='root';Password='admin';charset='utf8'";
// 用于缓存参数的HASH表
private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
///
/// 给定连接的数据库用假设参数执行一个sql命令(不返回数据集)
///
/// 一个有效的连接字符串
/// 命令类型(存储过程, 文本, 等等)
/// 存储过程名称或者sql命令语句
/// 执行命令所用参数的集合
/// 执行命令所影响的行数
public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
{
MySqlCommand cmd = new MySqlCommand();
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
}
///
/// 用现有的数据库连接执行一个sql命令(不返回数据集)
///