110,552
社区成员
发帖
与我相关
我的任务
分享
public static MySqlDataReader ExecuteReader(string connString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
{
MySqlCommand cmd = new MySqlCommand();
MySqlConnection conn = new MySqlConnection(connString);
MySqlDataReader rdr = null;
try
{
rdr.Close(); //在这个地方已经关闭了. 为什么过一段时间还是出现相同的错误. 不理解啊.
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using MySql.Data.MySqlClient;
using System.Data;
using System.Configuration;
namespace V5Shop.Data
{
public class MySqlDBHelp
{
private static MySqlConnection _connection;
/// <summary>
/// 获取数据库连接桥
/// </summary>
private static MySqlConnection Connection
{
get
{
string connectionString = ConfigurationManager.AppSettings["MYSQLConnString"];
//string connectionString = "Server=localhost;Database=test;Uid=root;Pwd=123456;CharSet=utf8;";
//string connectionString = "Server=125.88.186.112;port=3306;Database=drug;Uid=drug;Pwd=drug234..LZS!!;CharSet=utf8;";
//string connectionString = "Data Source=202.192.72.22;Initial Catalog=wwj;Persist Security Info=True;User ID=wwj;Password=wwj123";
if (_connection == null)
{
_connection = new MySqlConnection(connectionString);
_connection.Open();
}
if (_connection.State == ConnectionState.Closed)
{
_connection.Open();
}
if (_connection.State == ConnectionState.Broken)
{
_connection.Close();
_connection.Open();
}
return _connection;
}
}
#region 数据获取和执行类
/// <summary>
/// 获取表数据
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static MySqlDataReader GetDataRead(string sql)
{
MySqlCommand command = new MySqlCommand(sql, Connection);
MySqlDataReader read = null;
read.Close();
read = command.ExecuteReader();
return read;
}
public static int ExecuteNonQuery(string sql)
{
MySqlCommand command = new MySqlCommand(sql, Connection);
int row = command.ExecuteNonQuery();
return row;
}
//public static DataTable ExecuteDataTable(string sql)
//{
// MySqlCommand command = new MySqlCommand(sql, Connection);
// DataTable dt = new DataTable();
// try
// {
// MySqlDataAdapter sda = new MySqlDataAdapter(command);
// sda.Fill(dt);
// }
// catch (Exception)
// {
// throw;
// }
// return dt;
//}
public static DataTable ExecuteDataTable(string sql)
{
string connString = ConfigurationManager.AppSettings["MYSQLConnString"];
DataSet ds = ExecuteDataSet(connString,CommandType.Text,sql);
return ds.Tables[0];
}
/// <summary>
/// 执行sql语句,返回一行一列。。
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns></returns>
public static string GetScalar(string sql)
{
MySqlCommand command = new MySqlCommand(sql, Connection);
return command.ExecuteScalar().ToString();
}
#endregion
#region 事务操作
/// <summary>
/// 用提供的函数,执行SQL命令,返回一个从指定连接的数据库记录集
/// </summary>
/// <param name="connectionString">SqlConnection有效的SQL连接字符串</param>
/// <param name="commandType">CommandType:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">SQL语句或存储过程</param>
/// <param name="commandParameters">SqlParameter[]参数数组</param>
/// <returns>SqlDataReader:执行结果的记录集</returns>
public static MySqlDataReader ExecuteReader(string connString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
{
MySqlCommand cmd = new MySqlCommand();
MySqlConnection conn = new MySqlConnection(connString);
MySqlDataReader rdr = null;
// 我们在这里用 try/catch 是因为如果这个方法抛出异常,我们目的是关闭数据库连接,再抛出异常,
// 因为这时不会有DataReader存在,此后commandBehaviour.CloseConnection将不会工作。
try
{
rdr.Close();
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}
/// <summary>
/// 用提供的函数,执行SQL命令,返回一个从指定连接的数据库记录集
/// </summary>
/// <param name="connectionString">SqlConnection有效的SQL连接字符串</param>
/// <param name="commandType">CommandType:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">SQL语句或存储过程</param>
/// <returns>SqlDataReader:执行结果的记录集</returns>
public static MySqlDataReader ExecuteReader(string connString, CommandType cmdType, string cmdText)
{
return ExecuteReader(connString, cmdType, cmdText, (MySqlParameter[])null);
}
/// <summary>
/// 用提供的方法,执行带参数的SQL命令,返回值为该命令所影响的行数
/// </summary>
/// <param name="connString">SqlConnection有效的SQL连接字符串</param>
/// <param name="cmdType">CommandType:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="cmdText">SQL语句或存储过程</param>
/// <param name="cmdParameters">SQL语句所带的参数集</param>
/// <returns>int:该命令所影响的行数</returns>
public static int ExecuteNonQuery(string connString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParameters)
{
MySqlCommand cmd = new MySqlCommand();
using (MySqlConnection conn = new MySqlConnection(connString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParameters);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
}
/// <summary>
/// 用提供的方法,执行SQL命令,返回值为该命令所影响的行数
/// </summary>
/// <param name="connString">SqlConnection有效的SQL连接字符串</param>
/// <param name="cmdType">CommandType:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="cmdText">SQL语句或存储过程</param>
/// <returns>int:该命令所影响的行数</returns>
public static int ExecuteNonQuery(string connString, CommandType cmdType, string cmdText)
{
return ExecuteNonQuery(connString, cmdType, cmdText, (MySqlParameter[])null);
}
/// <summary>
/// 用提供的方法,执行带参数的SQL命令,返回值为结果集中第一行的第一列或空引用(如果结果集为空)。
/// </summary>
/// <param name="connString">SqlConnection有效的SQL连接字符串</param>
/// <param name="cmdType">CommandType:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="cmdText">SQL语句或存储过程</param>
/// <param name="cmdParameters">SQL语句所带的参数集</param>
/// <returns></returns>
public static string ExecuteScalar(string connString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParameters)
{
MySqlCommand cmd = new MySqlCommand();
using (MySqlConnection conn = new MySqlConnection(connString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParameters);
return cmd.ExecuteScalar().ToString();
}
}
/// <summary>
/// 用提供的方法,执行SQL命令,返回值为结果集中第一行的第一列或空引用(如果结果集为空)。
/// </summary>
/// <param name="connString">SqlConnection有效的SQL连接字符串</param>
/// <param name="cmdType">CommandType:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="cmdText">SQL语句或存储过程</param>
/// <returns></returns>
public static string ExecuteScalar(string connString, CommandType cmdType, string cmdText)
{
return ExecuteScalar(connString, cmdType, cmdText, (MySqlParameter[])null);
}
public static DataSet ExecuteDataSet(string connString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParameters)
{
MySqlCommand cmd = new MySqlCommand();
using (MySqlConnection conn = new MySqlConnection(connString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParameters);
MySqlDataAdapter ada = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
ada.Fill(ds);
cmd.Parameters.Clear();
return ds;
}
}
public static DataSet ExecuteDataSet(string connString, CommandType cmdType, string cmdText)
{
return ExecuteDataSet(connString, cmdType, cmdText, (MySqlParameter[])null);
}
public static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, 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
}
}
public static MySqlDataReader ExecuteReader(string connString, CommandType cmdType, string cmdText, params MySqlParameter[] cmdParms)
{
MySqlCommand cmd = new MySqlCommand();
MySqlConnection conn = new MySqlConnection(connString);
// 我们在这里用 try/catch 是因为如果这个方法抛出异常,我们目的是关闭数据库连接,再抛出异常,
// 因为这时不会有DataReader存在,此后commandBehaviour.CloseConnection将不会工作。
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
using (MySqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) {
cmd.Parameters.Clear();
return rdr;
}
}
catch
{
conn.Close();
throw;
}
}