//Copyright (C) 2006-2010 Kolee///数据访问基础类(基于MYSQL)///publicclassMySqlHelper2
{publicMySqlHelper2()
{
}#region公用方法publicstaticintGetMaxId(stringfieldName,stringtableName,stringconnStr)
{stringstrsql="select max("+fieldName+")+1 from"+tableName;objectobj=GetSingle(strsql, connStr);if(obj==null)return1;returnint.Parse(obj.ToString());
}publicstaticboolExists(stringsqlStr,stringconnStr,paramsMySqlParameter[] cmdParms)
{objectobj=GetSingle(sqlStr, connStr, cmdParms);intcmdresult;if((Equals(obj,null))||(Equals(obj, DBNull.Value)))
{
cmdresult=0;
}else{
cmdresult=int.Parse(obj.ToString());
}if(cmdresult==0)returnfalse;returntrue;
}#endregion#region执行简单SQL语句//执行SQL语句,返回影响的记录数//SQL语句//影响的记录数publicstaticintExecuteSql(stringsqlStr,stringconnStr)
{using(var connection=newMySqlConnection(connStr))
{using(var cmd=newMySqlCommand(sqlStr, connection))
{try{
connection.Open();introws=cmd.ExecuteNonQuery();returnrows;
}catch(Exception E)
{
connection.Close();throwE;
}
}
}
}//执行多条SQL语句,实现数据库事务。//多条SQL语句///publicstaticvoidExecuteSqlTran(ArrayList sqlStringList,stringconnStr)
{using(var conn=newMySqlConnection(connStr))
{
conn.Open();
var cmd=newMySqlCommand();
cmd.Connection=conn;
MySqlTransaction tx=conn.BeginTransaction();
cmd.Transaction=tx;try{for(intn=0; n
{stringstrsql=sqlStringList[n].ToString();if(strsql.Trim().Length>1)
{
cmd.CommandText=strsql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
}catch(Exception e)
{
tx.Rollback();throwe;
}
}
}//执行带一个存储过程参数的的SQL语句。//SQL语句///参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加//影响的记录数publicstaticintExecuteSql(stringsqlStr,stringcontent,stringconnStr)
{using(var connection=newMySqlConnection(connStr))
{
var cmd=newMySqlCommand(sqlStr, connection);
var myParameter=newSystem.Data.SqlClient.SqlParameter("@content", SqlDbType.NText) { Value=content };
cmd.Parameters.Add(myParameter);try{
connection.Open();introws=cmd.ExecuteNonQuery();returnrows;
}catch(Exception E)
{throwE;
}finally{
cmd.Dispose();
connection.Close();
}
}
}//向数据库里插入图像格式的字段(和上面情况类似的另一种实例)//SQL语句///图像字节,数据库的字段类型为image的情况//影响的记录数publicstaticintExecuteSqlInsertImg(stringsqlStr,byte[] fs,stringconnStr)
{using(var connection=newMySqlConnection(connStr))
{
var cmd=newMySqlCommand(sqlStr, connection);
var myParameter=newSystem.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image) { Value=fs };
cmd.Parameters.Add(myParameter);try{
connection.Open();introws=cmd.ExecuteNonQuery();returnrows;
}catch(Exception E)
{throwE;
}finally{
cmd.Dispose();
connection.Close();
}
}
}//执行一条计算查询结果语句,返回查询结果(object)。//计算查询结果语句//查询结果(object)publicstaticobjectGetSingle(stringsqlStr,stringconnStr)
{using(var connection=newMySqlConnection(connStr))
{using(var cmd=newMySqlCommand(sqlStr, connection))
{try{
connection.Open();objectobj=cmd.ExecuteScalar();if((Equals(obj,null))||(Equals(obj, DBNull.Value)))
{returnnull;
}returnobj;
}catch(Exception e)
{
connection.Close();throwe;
}
}
}
}//执行查询语句,返回SqlDataReader//查询语句/SqlDataReaderpublicstaticMySqlDataReader ExecuteReader(stringsqlStr,stringconnStr)
{
var connection=newMySqlConnection(connStr);
var cmd=newMySqlCommand(sqlStr, connection);try{
connection.Open();
MySqlDataReader myReader=cmd.ExecuteReader(CommandBehavior.CloseConnection);returnmyReader;
}catch(Exception e)
{throwe;
}finally{
connection.Close();
}
}//执行查询语句,返回DataSet//查询语句//DataSetpublicstaticDataSet Query(stringsqlString,stringconnStr)
{using(var connection=newMySqlConnection(connStr))
{
var ds=newDataSet();try{
connection.Open();
var command=newMySqlDataAdapter(sqlString, connection);
command.Fill(ds,"ds");
}catch(Exception ex)
{throwex;
}returnds;
}
}#endregion#region执行带参数的SQL语句//执行SQL语句,返回影响的记录数//SQL语句/影响的记录数publicstaticintExecuteSql(stringsqlStr,stringconnStr,paramsMySqlParameter[] cmdParms)
{using(var connection=newMySqlConnection(connStr))
{using(var cmd=newMySqlCommand())
{try{
PrepareCommand(cmd, connection,null, sqlStr, cmdParms);introws=cmd.ExecuteNonQuery();
cmd.Parameters.Clear();returnrows;
}catch(Exception e)
{throwe;
}
}
}
}//执行多条SQL语句,实现数据库事务。//SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])///publicstaticvoidExecuteSqlTran(Hashtable sqlStrList,stringconnStr)
{using(var conn=newMySqlConnection(connStr))
{
conn.Open();using(MySqlTransaction trans=conn.BeginTransaction())
{
var cmd=newMySqlCommand();try{//循环foreach(DictionaryEntry myDeinsqlStrList)
{stringcmdText=myDe.Key.ToString();
var cmdParms=(MySqlParameter[])myDe.Value;
PrepareCommand(cmd, conn, trans, cmdText, cmdParms);intval=cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
trans.Commit();
}
}catch(Exception ex)
{
trans.Rollback();throwex;
}
}
}
}//执行一条计算查询结果语句,返回查询结果(object)。//计算查询结果语句/查询结果(object)publicstaticobjectGetSingle(stringsqlStr,stringconnStr,paramsMySqlParameter[] cmdParms)
{using(var connection=newMySqlConnection(connStr))
{using(var cmd=newMySqlCommand())
{try{
PrepareCommand(cmd, connection,null, sqlStr, cmdParms);objectobj=cmd.ExecuteScalar();
cmd.Parameters.Clear();if((Equals(obj,null))||(Equals(obj, DBNull.Value)))
{returnnull;
}returnobj;
}catch(Exception e)
{throwe;
}
}
}
}//执行查询语句,返回SqlDataReader//查询语句/SqlDataReaderpublicstaticMySqlDataReader ExecuteReader(stringsqlStr,stringconnStr,paramsMySqlParameter[] cmdParms)
{
var connection=newMySqlConnection(connStr);
var cmd=newMySqlCommand();try{
PrepareCommand(cmd, connection,null, sqlStr, cmdParms);
MySqlDataReader myReader=cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();returnmyReader;
}catch(Exception e)
{throwe;
}finally{
connection.Close();
}
}//执行查询语句,返回DataSet//查询语句/DataSetpublicstaticDataSet Query(stringsqlStr,stringconnStr,paramsMySqlParameter[] cmdParms)
{using(var connection=newMySqlConnection(connStr))
{
var cmd=newMySqlCommand();
PrepareCommand(cmd, connection,null, sqlStr, cmdParms);using(var da=newMySqlDataAdapter(cmd))
{
var ds=newDataSet();try{
da.Fill(ds,"ds");
cmd.Parameters.Clear();
}catch(Exception ex)
{throwex;
}returnds;
}
}
}privatestaticvoidPrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans,stringcmdText, MySqlParameter[] cmdParms)
{if(conn.State!=ConnectionState.Open)
conn.Open();
cmd.Connection=conn;
cmd.CommandText=cmdText;if(trans!=null)
cmd.Transaction=trans;
cmd.CommandType=CommandType.Text;//cmdType;if(cmdParms!=null)
{foreach(MySqlParameter parmincmdParms)
cmd.Parameters.Add(parm);
}
}#endregion#region存储过程操作//执行存储过程//存储过程名//存储过程参数///SqlDataReaderpublicstaticMySqlDataReader RunProcedure(stringstoredProcName,stringconnStr, IDataParameter[] parameters)
{
var connection=newMySqlConnection(connStr);
MySqlDataReader returnReader;
connection.Open();
MySqlCommand command=BuildQueryCommand(connection, storedProcName, parameters);
command.CommandType=CommandType.StoredProcedure;
returnReader=command.ExecuteReader(CommandBehavior.CloseConnection);returnreturnReader;
}//执行存储过程//存储过程名///存储过程参数///DataSet结果中的表名///DataSetpublicstaticDataSet RunProcedure(stringstoredProcName,stringconnStr, IDataParameter[] parameters,stringtableName)
{using(var connection=newMySqlConnection(connStr))
{
var dataSet=newDataSet();
connection.Open();
var sqlDa=newMySqlDataAdapter();
sqlDa.SelectCommand=BuildQueryCommand(connection, storedProcName, parameters);
sqlDa.Fill(dataSet, tableName);
connection.Close();returndataSet;
}
}//构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)//数据库连接///存储过程名///存储过程参数///SqlCommandprivatestaticMySqlCommand BuildQueryCommand(MySqlConnection connection,stringstoredProcName, IEnumerableparameters)
{
var command=newMySqlCommand(storedProcName, connection) {CommandType=CommandType.StoredProcedure};foreach(MySqlParameter parameterinparameters)
{
command.Parameters.Add(parameter);
}returncommand;
}//执行存储过程,返回影响的行数//存储过程名//存储过程参数///影响的行数///publicstaticintRunProcedure(stringstoredProcName,stringconnStr, IDataParameter[] parameters,outintrowsAffected)
{using(var connection=newMySqlConnection(connStr))
{intresult;
connection.Open();
MySqlCommand command=BuildIntCommand(connection, storedProcName, parameters);
rowsAffected=command.ExecuteNonQuery();
result=(int)command.Parameters["ReturnValue"].Value;//Connection.Close();returnresult;
}
}//创建 SqlCommand 对象实例(用来返回一个整数值)/存储过程名///存储过程参数///SqlCommand 对象实例privatestaticMySqlCommand BuildIntCommand(MySqlConnection connection,stringstoredProcName, IEnumerableparameters)
{
MySqlCommand command=BuildQueryCommand(connection, storedProcName, parameters);
command.Parameters.Add(newMySqlParameter("ReturnValue",
MySqlDbType.Int32,4, ParameterDirection.ReturnValue,false,0,0,string.Empty, DataRowVersion.Default,null));returncommand;
}#endregion}