C#MysqlHelper
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
View?Code???
??
MysqlHelper類???
using?System;???
using?System.Collections;???
using?System.Collections.Specialized;???
using?System.Data;???
using?MySql.Data.MySqlClient;???
using?System.Configuration;???
using?System.Data.Common;???
using?System.Collections.Generic;???
using?System.Text.RegularExpressions;???
namespace?LOAF.DAL???
{???
public?class?MysqlHelper???
{???
//數(shù)據(jù)庫連接字符串(web.config來配置),可以動(dòng)態(tài)更改connectionString支持多數(shù)據(jù)庫.???
//?public?static?string?connectionString?=?ConfigurationManager.ConnectionStrings["ConnDB"].ConnectionString;???
public?static?string?connectionString?=?ConfigurationManager.AppSettings["MySQL"];???
//public?string?m?=?ConfigurationManager.AppSettings["MySQL"];???
public?MysqlHelper()?{?}???
#region?ExecuteNonQuery???
//執(zhí)行SQL語句,返回影響的記錄數(shù)???
///?<summary>???
///?執(zhí)行SQL語句,返回影響的記錄數(shù)???
///?</summary>???
///?<param?name="SQLString">SQL語句</param>???
///?<returns>影響的記錄數(shù)</returns>???
public?static?int?ExecuteNonQuery(string?SQLString)???
{???
using?(MySqlConnection?connection?=?new?MySqlConnection(connectionString))???
{???
using?(MySqlCommand?cmd?=?new?MySqlCommand(SQLString,?connection))???
{???
try???
{???
connection.Open();???
int?rows?=?cmd.ExecuteNonQuery();???
return?rows;???
}???
catch?(MySql.Data.MySqlClient.MySqlException?e)???
{???
connection.Close();???
throw?e;???
}???
}???
}???
}???
///?<summary>???
///?執(zhí)行SQL語句,返回影響的記錄數(shù)???
///?</summary>???
///?<param?name="SQLString">SQL語句</param>???
///?<returns>影響的記錄數(shù)</returns>???
public?static?int?ExecuteNonQuery(string?SQLString,?params?MySqlParameter[]?cmdParms)???
{???
using?(MySqlConnection?connection?=?new?MySqlConnection(connectionString))???
{???
using?(MySqlCommand?cmd?=?new?MySqlCommand())???
{???
try???
{???
PrepareCommand(cmd,?connection,?null,?SQLString,?cmdParms);???
int?rows?=?cmd.ExecuteNonQuery();???
cmd.Parameters.Clear();???
return?rows;???
}???
catch?(MySql.Data.MySqlClient.MySqlException?e)???
{???
throw?e;???
}???
}???
}???
}???
//執(zhí)行多條SQL語句,實(shí)現(xiàn)數(shù)據(jù)庫事務(wù)。???
///?<summary>???
///?執(zhí)行多條SQL語句,實(shí)現(xiàn)數(shù)據(jù)庫事務(wù)。???
///?</summary>???
///?<param?name="SQLStringList">多條SQL語句</param>???
public?static?bool?ExecuteNoQueryTran(List<String>?SQLStringList)???
{???
using?(MySqlConnection?conn?=?new?MySqlConnection(connectionString))???
{???
conn.Open();???
MySqlCommand?cmd?=?new?MySqlCommand();???
cmd.Connection?=?conn;???
MySqlTransaction?tx?=?conn.BeginTransaction();???
cmd.Transaction?=?tx;???
try???
{???
for?(int?n?=?0;?n?<?SQLStringList.Count;?n++)???
{???
string?strsql?=?SQLStringList[n];???
if?(strsql.Trim().Length?>?1)???
{???
cmd.CommandText?=?strsql;???
PrepareCommand(cmd,?conn,?tx,?strsql,?null);???
cmd.ExecuteNonQuery();???
}???
}???
cmd.ExecuteNonQuery();???
tx.Commit();???
return?true;???
}???
catch???
{???
tx.Rollback();???
return?false;???
}???
}???
}???
#endregion???
#region?ExecuteScalar???
///?<summary>???
///?執(zhí)行一條計(jì)算查詢結(jié)果語句,返回查詢結(jié)果(object)。???
///?</summary>???
///?<param?name="SQLString">計(jì)算查詢結(jié)果語句</param>???
///?<returns>查詢結(jié)果(object)</returns>???
public?static?object?ExecuteScalar(string?SQLString)???
{???
using?(MySqlConnection?connection?=?new?MySqlConnection(connectionString))???
{???
using?(MySqlCommand?cmd?=?new?MySqlCommand(SQLString,?connection))???
{???
try???
{???
connection.Open();???
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>???
///?執(zhí)行一條計(jì)算查詢結(jié)果語句,返回查詢結(jié)果(object)。???
///?</summary>???
///?<param?name="SQLString">計(jì)算查詢結(jié)果語句</param>???
///?<returns>查詢結(jié)果(object)</returns>???
public?static?object?ExecuteScalar(string?SQLString,?params?MySqlParameter[]?cmdParms)???
{???
using?(MySqlConnection?connection?=?new?MySqlConnection(connectionString))???
{???
using?(MySqlCommand?cmd?=?new?MySqlCommand())???
{???
try???
{???
PrepareCommand(cmd,?connection,?null,?SQLString,?cmdParms);???
object?obj?=?cmd.ExecuteScalar();???
cmd.Parameters.Clear();???
if?((Object.Equals(obj,?null))?||?(Object.Equals(obj,?System.DBNull.Value)))???
{???
return?null;???
}???
else???
{???
return?obj;???
}???
}???
catch?(MySql.Data.MySqlClient.MySqlException?e)???
{???
throw?e;???
}???
}???
}???
}???
#endregion???
#region?ExecuteReader???
///?<summary>???
///?執(zhí)行查詢語句,返回MySqlDataReader?(?注意:調(diào)用該方法后,一定要對(duì)MySqlDataReader進(jìn)行Close?)???
///?</summary>???
///?<param?name="strSQL">查詢語句</param>???
///?<returns>MySqlDataReader</returns>???
public?static?MySqlDataReader?ExecuteReader(string?strSQL)???
{???
MySqlConnection?connection?=?new?MySqlConnection(connectionString);???
MySqlCommand?cmd?=?new?MySqlCommand(strSQL,?connection);???
try???
{???
connection.Open();???
MySqlDataReader?myReader?=?cmd.ExecuteReader(CommandBehavior.CloseConnection);???
return?myReader;???
}???
catch?(MySql.Data.MySqlClient.MySqlException?e)???
{???
throw?e;???
}???
}???
///?<summary>???
///?執(zhí)行查詢語句,返回MySqlDataReader?(?注意:調(diào)用該方法后,一定要對(duì)MySqlDataReader進(jìn)行Close?)???
///?</summary>???
///?<param?name="strSQL">查詢語句</param>???
///?<returns>MySqlDataReader</returns>???
public?static?MySqlDataReader?ExecuteReader(string?SQLString,?params?MySqlParameter[]?cmdParms)???
{???
MySqlConnection?connection?=?new?MySqlConnection(connectionString);???
MySqlCommand?cmd?=?new?MySqlCommand();???
try???
{???
PrepareCommand(cmd,?connection,?null,?SQLString,?cmdParms);???
MySqlDataReader?myReader?=?cmd.ExecuteReader(CommandBehavior.CloseConnection);???
cmd.Parameters.Clear();???
return?myReader;???
}???
catch?(MySql.Data.MySqlClient.MySqlException?e)???
{???
throw?e;???
}???
//?finally???
//?{???
//?cmd.Dispose();???
//?connection.Close();???
//?}???
}???
#endregion???
#region?ExecuteDataTable???
///?<summary>???
///?執(zhí)行查詢語句,返回DataTable???
///?</summary>???
///?<param?name="SQLString">查詢語句</param>???
///?<returns>DataTable</returns>???
public?static?DataTable?ExecuteDataTable(string?SQLString)???
{???
using?(MySqlConnection?connection?=?new?MySqlConnection(connectionString))???
{???
DataSet?ds?=?new?DataSet();???
try???
{???
connection.Open();???
MySqlDataAdapter?command?=?new?MySqlDataAdapter(SQLString,?connection);???
command.Fill(ds,?"ds");???
}???
catch?(MySql.Data.MySqlClient.MySqlException?ex)???
{???
throw?new?Exception(ex.Message);???
}???
return?ds.Tables[0];???
}???
}???
///?<summary>???
///?執(zhí)行查詢語句,返回DataSet???
///?</summary>???
///?<param?name="SQLString">查詢語句</param>???
///?<returns>DataTable</returns>???
public?static?DataTable?ExecuteDataTable(string?SQLString,?params?MySqlParameter[]?cmdParms)???
{???
using?(MySqlConnection?connection?=?new?MySqlConnection(connectionString))???
{???
MySqlCommand?cmd?=?new?MySqlCommand();???
PrepareCommand(cmd,?connection,?null,?SQLString,?cmdParms);???
using?(MySqlDataAdapter?da?=?new?MySqlDataAdapter(cmd))???
{???
DataSet?ds?=?new?DataSet();???
try???
{???
da.Fill(ds,?"ds");???
cmd.Parameters.Clear();???
}???
catch?(MySql.Data.MySqlClient.MySqlException?ex)???
{???
throw?new?Exception(ex.Message);???
}???
return?ds.Tables[0];???
}???
}???
}???
//獲取起始頁碼和結(jié)束頁碼???
public?static?DataTable?ExecuteDataTable(string?cmdText,?int?startResord,?int?maxRecord)???
{???
using?(MySqlConnection?connection?=?new?MySqlConnection(connectionString))???
{???
DataSet?ds?=?new?DataSet();???
try???
{???
connection.Open();???
MySqlDataAdapter?command?=?new?MySqlDataAdapter(cmdText,?connection);???
command.Fill(ds,?startResord,?maxRecord,?"ds");???
}???
catch?(MySql.Data.MySqlClient.MySqlException?ex)???
{???
throw?new?Exception(ex.Message);???
}???
return?ds.Tables[0];???
}???
}???
#endregion???
///?<summary>???
///?獲取分頁數(shù)據(jù)?在不用存儲(chǔ)過程情況下???
///?</summary>???
///?<param?name="recordCount">總記錄條數(shù)</param>???
///?<param?name="selectList">選擇的列逗號(hào)隔開,支持top?num</param>???
///?<param?name="tableName">表名字</param>???
///?<param?name="whereStr">條件字符?必須前加?and</param>???
///?<param?name="orderExpression">排序?例如?ID</param>???
///?<param?name="pageIdex">當(dāng)前索引頁</param>???
///?<param?name="pageSize">每頁記錄數(shù)</param>???
///?<returns></returns>???
public?static?DataTable?getPager(out?int?recordCount,?string?selectList,?string?tableName,?string?whereStr,?string?orderExpression,?int?pageIdex,?int?pageSize)???
{???
int?rows?=?0;???
DataTable?dt?=?new?DataTable();???
MatchCollection?matchs?=?Regex.Matches(selectList,?@"top\s+\d{1,}",?RegexOptions.IgnoreCase);//含有top???
string?sqlStr?=?sqlStr?=?string.Format("select?{0}?from?{1}?where?1=1?{2}",?selectList,?tableName,?whereStr);???
if?(!string.IsNullOrEmpty(orderExpression))?{?sqlStr?+=?string.Format("?Order?by?{0}",?orderExpression);?}???
if?(matchs.Count?>?0)?//含有top的時(shí)候???
{???
DataTable?dtTemp?=?ExecuteDataTable(sqlStr);???
rows?=?dtTemp.Rows.Count;???
}???
else?//不含有top的時(shí)候???
{???
string?sqlCount?=?string.Format("select?count(*)?from?{0}?where?1=1?{1}?",?tableName,?whereStr);???
//獲取行數(shù)???
object?obj?=?ExecuteScalar(sqlCount);???
if?(obj?!=?null)???
{???
rows?=?Convert.ToInt32(obj);???
}???
}???
dt?=?ExecuteDataTable(sqlStr,?(pageIdex-1)*pageSize,?pageSize);???
recordCount?=?rows;???
return?dt;???
}???
#region?創(chuàng)建command???
private?static?void?PrepareCommand(MySqlCommand?cmd,?MySqlConnection?conn,?MySqlTransaction?trans,?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?=?CommandType.Text;//cmdType;???
if?(cmdParms?!=?null)???
{???
foreach?(MySqlParameter?parameter?in?cmdParms)???
{???
if?((parameter.Direction?==?ParameterDirection.InputOutput?||?parameter.Direction?==?ParameterDirection.Input)?&&???
(parameter.Value?==?null))???
{???
parameter.Value?=?DBNull.Value;???
}???
cmd.Parameters.Add(parameter);???
}???
}???
}???
#endregion???
}???
}??
需要注意的地方有如下幾點(diǎn)?
1)在sqlserver中參數(shù)化sql語句是用“@”符號(hào),在mysql里面需要是用?號(hào),切記,切記.?
2 )還有就是sqlserver中刪除表可以這樣寫delete news where ID=12,但是在mysql里面 是delete from news where ID=12,收了from報(bào)錯(cuò)?
3 )我在使用過程中遇到了中文亂碼,網(wǎng)上大部分解決辦法是把表的設(shè)置成utf-8字符集。以及 C:\Program Files\MySQL\MySQL Server 5.1路徑下my.ini 打開找到兩處?
default-character-set 都設(shè)置成=utf8。
轉(zhuǎn)載于:https://my.oschina.net/u/582827/blog/472297
總結(jié)
以上是生活随笔為你收集整理的C#MysqlHelper的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql复杂操作
- 下一篇: linux cmake编译源码,linu