生活随笔
收集整理的這篇文章主要介紹了
MSSQL数据库C#操作类(SQLHELPER类的修改版)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
using?System; ??using?System.Collections; ??using?System.Collections.Specialized; ??using?System.Data; ??using?System.Data.SqlClient; ??using?System.Configuration; ??namespace?NMJU.Web.DBUtility ??{ ????????????????????????????????????public?abstract?class?DbHelperSQL ??????{ ????????????????????public?static?string?connectionString?=?ConfigurationManager.AppSettings["MSSQLConnectionString"]; ????????????????????public?DbHelperSQL() ??????????{ ??????????} ??????????#region?公用方法 ????????????????????????????????????????????????????????????????????????????????public?static?int?GetDataRecordCount(string?field,?string?tableName,?string?where) ??????????{ ??????????????????string?strsql?=?"select?count("?+?field?+?")?from?"?+?tableName; ??????????????if?(where?!=?"") ??????????????{ ??????????????????strsql?+=?"?where?"?+?where; ??????????????} ??????????????object?obj?=?DbHelperSQL.GetSingle(strsql); ??????????????if?(obj?==?null) ??????????????{ ??????????????????return?1; ??????????????} ??????????????else??????????????{ ??????????????????return?int.Parse(obj.ToString()); ??????????????} ??????????????} ??????????public?static?int?GetMaxID(string?FieldName,?string?TableName) ??????????{ ??????????????string?strsql?=?"select?max("?+?FieldName?+?")+1?from?"?+?TableName; ??????????????object?obj?=?DbHelperSQL.GetSingle(strsql); ??????????????if?(obj?==?null) ??????????????{ ??????????????????return?1; ??????????????} ??????????????else??????????????{ ??????????????????return?int.Parse(obj.ToString()); ??????????????} ??????????} ??????????public?static?bool?Exists(string?strSql) ??????????{ ??????????????object?obj?=?DbHelperSQL.GetSingle(strSql); ??????????????int?cmdresult; ??????????????if?((Object.Equals(obj,?null))?||?(Object.Equals(obj,?System.DBNull.Value))) ??????????????{ ??????????????????cmdresult?=?0; ??????????????} ??????????????else??????????????{ ??????????????????cmdresult?=?int.Parse(obj.ToString()); ??????????????} ??????????????if?(cmdresult?==?0) ??????????????{ ??????????????????return?false; ??????????????} ??????????????else??????????????{ ??????????????????return?true; ??????????????} ??????????} ??????????public?static?bool?Exists(string?strSql,?params?SqlParameter[]?cmdParms) ??????????{ ??????????????object?obj?=?DbHelperSQL.GetSingle(strSql,?cmdParms); ??????????????int?cmdresult; ??????????????if?((Object.Equals(obj,?null))?||?(Object.Equals(obj,?System.DBNull.Value))) ??????????????{ ??????????????????cmdresult?=?0; ??????????????} ??????????????else??????????????{ ??????????????????cmdresult?=?int.Parse(obj.ToString()); ??????????????} ??????????????if?(cmdresult?==?0) ??????????????{ ??????????????????return?false; ??????????????} ??????????????else??????????????{ ??????????????????return?true; ??????????????} ??????????} ?????????#endregion ??????????#region??執行簡單SQL語句 ??????????????????????????????????????????????????????????????public?static?int?ExecuteSql(string?SQLString) ??????????{ ??????????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString)) ??????????????{ ??????????????????using?(SqlCommand?cmd?=?new?SqlCommand(SQLString,?connection)) ??????????????????{ ??????????????????????try??????????????????????{ ??????????????????????????connection.Open(); ??????????????????????????int?rows?=?cmd.ExecuteNonQuery(); ??????????????????????????return?rows; ??????????????????????} ??????????????????????catch?(System.Data.SqlClient.SqlException?E) ??????????????????????{ ??????????????????????????connection.Close(); ??????????????????????????throw?new?Exception(E.Message); ????????????????????????????????????????????????} ??????????????????} ??????????????} ??????????} ????????????????????????????????????????????????????????????????????????public?static?int?ExecuteSqlByTime(string?SQLString,?int?Times) ??????????{ ??????????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString)) ??????????????{ ??????????????????using?(SqlCommand?cmd?=?new?SqlCommand(SQLString,?connection)) ??????????????????{ ??????????????????????try??????????????????????{ ??????????????????????????connection.Open(); ??????????????????????????cmd.CommandTimeout?=?Times; ??????????????????????????int?rows?=?cmd.ExecuteNonQuery(); ??????????????????????????return?rows; ??????????????????????} ??????????????????????catch?(System.Data.SqlClient.SqlException?E) ??????????????????????{ ??????????????????????????connection.Close(); ??????????????????????????throw?new?Exception(E.Message); ????????????????????????????????????????????????} ??????????????????} ??????????????} ??????????} ????????????????????????????????????????????????????public?static?void?ExecuteSqlTran(ArrayList?SQLStringList) ??????????{ ??????????????using?(SqlConnection?conn?=?new?SqlConnection(connectionString)) ??????????????{ ??????????????????conn.Open(); ??????????????????SqlCommand?cmd?=?new?SqlCommand(); ??????????????????cmd.Connection?=?conn; ??????????????????SqlTransaction?tx?=?conn.BeginTransaction(); ??????????????????cmd.Transaction?=?tx; ??????????????????try??????????????????{ ??????????????????????for?(int?n?=?0;?n?<?SQLStringList.Count;?n++) ??????????????????????{ ??????????????????????????string?strsql?=?SQLStringList[n].ToString(); ??????????????????????????if?(strsql.Trim().Length?>?1) ??????????????????????????{ ??????????????????????????????cmd.CommandText?=?strsql; ??????????????????????????????cmd.ExecuteNonQuery(); ??????????????????????????} ??????????????????????} ??????????????????????tx.Commit(); ??????????????????} ??????????????????catch?(System.Data.SqlClient.SqlException?E) ??????????????????{ ??????????????????????tx.Rollback(); ??????????????????????throw?new?Exception(E.Message); ????????????????????????????????????????} ??????????????} ??????????} ??????????????????????????????????????????????????????????????????????public?static?int?ExecuteSql(string?SQLString,?string?content) ??????????{ ??????????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString)) ??????????????{ ??????????????????SqlCommand?cmd?=?new?SqlCommand(SQLString,?connection); ??????????????????System.Data.SqlClient.SqlParameter?myParameter?=?new?System.Data.SqlClient.SqlParameter("@content",?SqlDbType.NText); ??????????????????myParameter.Value?=?content; ??????????????????cmd.Parameters.Add(myParameter); ??????????????????try??????????????????{ ??????????????????????connection.Open(); ??????????????????????int?rows?=?cmd.ExecuteNonQuery(); ??????????????????????return?rows; ??????????????????} ??????????????????catch?(System.Data.SqlClient.SqlException?E) ??????????????????{ ??????????????????????throw?new?Exception(E.Message); ????????????????????????????????????????} ??????????????????finally??????????????????{ ??????????????????????cmd.Dispose(); ??????????????????????connection.Close(); ??????????????????} ??????????????} ??????????} ??????????????????????????????????????????????????????????????????????public?static?object?ExecuteSqlGet(string?SQLString,?string?content) ??????????{ ??????????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString)) ??????????????{ ??????????????????SqlCommand?cmd?=?new?SqlCommand(SQLString,?connection); ??????????????????System.Data.SqlClient.SqlParameter?myParameter?=?new?System.Data.SqlClient.SqlParameter("@content",?SqlDbType.NText); ??????????????????myParameter.Value?=?content; ??????????????????cmd.Parameters.Add(myParameter); ??????????????????try??????????????????{ ??????????????????????connection.Open(); ??????????????????????object?obj?=?cmd.ExecuteScalar(); ??????????????????????if?((Object.Equals(obj,?null))?||?(Object.Equals(obj,?System.DBNull.Value))) ??????????????????????{ ??????????????????????????return?null; ??????????????????????} ??????????????????????else??????????????????????{ ??????????????????????????return?obj; ??????????????????????} ??????????????????} ??????????????????catch?(System.Data.SqlClient.SqlException?E) ??????????????????{ ??????????????????????throw?new?Exception(E.Message); ????????????????????????????????????????} ??????????????????finally??????????????????{ ??????????????????????cmd.Dispose(); ??????????????????????connection.Close(); ??????????????????} ??????????????} ??????????} ??????????????????????????????????????????????????????????????????????public?static?int?ExecuteSqlInsertImg(string?strSQL,?byte[]?fs) ??????????{ ??????????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString)) ??????????????{ ??????????????????SqlCommand?cmd?=?new?SqlCommand(strSQL,?connection); ??????????????????System.Data.SqlClient.SqlParameter?myParameter?=?new?System.Data.SqlClient.SqlParameter("@fs",?SqlDbType.Image); ??????????????????myParameter.Value?=?fs; ??????????????????cmd.Parameters.Add(myParameter); ??????????????????try??????????????????{ ??????????????????????connection.Open(); ??????????????????????int?rows?=?cmd.ExecuteNonQuery(); ??????????????????????return?rows; ??????????????????} ??????????????????catch?(System.Data.SqlClient.SqlException?E) ??????????????????{ ??????????????????????throw?new?Exception(E.Message); ????????????????????????????????????????} ??????????????????finally??????????????????{ ??????????????????????cmd.Dispose(); ??????????????????????connection.Close(); ??????????????????} ??????????????} ??????????} ??????????????????????????????????????????????????????????????public?static?object?GetSingle(string?SQLString) ??????????{ ??????????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString)) ??????????????{ ??????????????????using?(SqlCommand?cmd?=?new?SqlCommand(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?(System.Data.SqlClient.SqlException?e) ??????????????????????{ ??????????????????????????connection.Close(); ??????????????????????????throw?new?Exception(e.Message); ????????????????????????????????????????????????} ??????????????????} ??????????????} ??????????} ????????????????????????????????????????????????????????????????public?static?SqlDataReader?ExecuteReader(string?strSQL) ??????????{ ??????????????SqlConnection?connection?=?new?SqlConnection(connectionString); ??????????????SqlCommand?cmd?=?new?SqlCommand(strSQL,?connection); ??????????????try??????????????{ ??????????????????connection.Open(); ??????????????????SqlDataReader?myReader?=?cmd.ExecuteReader(); ??????????????????return?myReader; ??????????????} ??????????????catch?(System.Data.SqlClient.SqlException?e) ??????????????{ ??????????????????throw?new?Exception(e.Message); ????????????????????????????????} ????????????????????????????????????????????????????????????????????????????????????} ????????????????????????????????????????????????????????????public?static?DataSet?Query(string?SQLString) ??????????{ ??????????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString)) ??????????????{ ??????????????????DataSet?ds?=?new?DataSet(); ??????????????????try??????????????????{ ??????????????????????connection.Open(); ??????????????????????SqlDataAdapter?command?=?new?SqlDataAdapter(SQLString,?connection); ??????????????????????command.Fill(ds,?"ds"); ??????????????????} ??????????????????catch?(System.Data.SqlClient.SqlException?E) ??????????????????{ ??????????????????????throw?new?Exception(E.Message); ????????????????????????????????????????} ??????????????????return?ds; ??????????????} ??????????} ??????????????????????????????????????????????????????????????????????public?static?DataSet?Query(string?SQLString,?int?Times) ??????????{ ??????????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString)) ??????????????{ ??????????????????DataSet?ds?=?new?DataSet(); ??????????????????try??????????????????{ ??????????????????????connection.Open(); ??????????????????????SqlDataAdapter?command?=?new?SqlDataAdapter(SQLString,?connection); ??????????????????????command.SelectCommand.CommandTimeout?=?Times; ??????????????????????command.Fill(ds,?"ds"); ??????????????????} ??????????????????catch?(System.Data.SqlClient.SqlException?E) ??????????????????{ ??????????????????????throw?new?Exception(E.Message); ????????????????????????????????????????} ??????????????????return?ds; ??????????????} ??????????} ????????????#endregion ??????????#region?執行帶參數的SQL語句 ??????????????????????????????????????????????????????????????public?static?int?ExecuteSql(string?SQLString,?params?SqlParameter[]?cmdParms) ??????????{ ??????????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString)) ??????????????{ ??????????????????using?(SqlCommand?cmd?=?new?SqlCommand()) ??????????????????{ ??????????????????????try??????????????????????{ ??????????????????????????PrepareCommand(cmd,?connection,?null,?SQLString,?cmdParms); ??????????????????????????int?rows?=?cmd.ExecuteNonQuery(); ??????????????????????????cmd.Parameters.Clear(); ??????????????????????????return?rows; ??????????????????????} ??????????????????????catch?(System.Data.SqlClient.SqlException?E) ??????????????????????{ ??????????????????????????throw?new?Exception(E.Message); ????????????????????????????????????????????????} ??????????????????} ??????????????} ??????????} ??????????????????????????????????????????????????????public?static?void?ExecuteSqlTran(Hashtable?SQLStringList) ??????????{ ??????????????using?(SqlConnection?conn?=?new?SqlConnection(connectionString)) ??????????????{ ??????????????????conn.Open(); ??????????????????using?(SqlTransaction?trans?=?conn.BeginTransaction()) ??????????????????{ ??????????????????????SqlCommand?cmd?=?new?SqlCommand(); ??????????????????????try??????????????????????{ ????????????????????????????????????????????????????foreach?(DictionaryEntry?myDE?in?SQLStringList) ??????????????????????????{ ??????????????????????????????string?cmdText?=?myDE.Key.ToString(); ??????????????????????????????SqlParameter[]?cmdParms?=?(SqlParameter[])myDE.Value; ??????????????????????????????PrepareCommand(cmd,?conn,?trans,?cmdText,?cmdParms); ??????????????????????????????int?val?=?cmd.ExecuteNonQuery(); ??????????????????????????????cmd.Parameters.Clear(); ????????????????????????????????trans.Commit(); ??????????????????????????} ??????????????????????} ??????????????????????catch??????????????????????{ ??????????????????????????trans.Rollback(); ??????????????????????????throw; ??????????????????????} ??????????????????} ??????????????} ??????????} ????????????????????????????????????????????????????????????????public?static?object?GetSingle(string?SQLString,?params?SqlParameter[]?cmdParms) ??????????{ ??????????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString)) ??????????????{ ??????????????????using?(SqlCommand?cmd?=?new?SqlCommand()) ??????????????????{ ??????????????????????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?(System.Data.SqlClient.SqlException?e) ??????????????????????{ ??????????????????????????throw?new?Exception(e.Message); ????????????????????????????????????????????????} ??????????????????} ??????????????} ??????????} ??????????????????????????????????????????????????????????????public?static?SqlDataReader?ExecuteReader(string?SQLString,?params?SqlParameter[]?cmdParms) ??????????{ ??????????????SqlConnection?connection?=?new?SqlConnection(connectionString); ??????????????SqlCommand?cmd?=?new?SqlCommand(); ??????????????try??????????????{ ??????????????????PrepareCommand(cmd,?connection,?null,?SQLString,?cmdParms); ??????????????????SqlDataReader?myReader?=?cmd.ExecuteReader(); ??????????????????cmd.Parameters.Clear(); ??????????????????return?myReader; ??????????????} ??????????????catch?(System.Data.SqlClient.SqlException?e) ??????????????{ ??????????????????throw?new?Exception(e.Message); ????????????????????????????????} ??????????????????????????????????????????????????????????????????????????????????} ??????????????????????????????????????????????????????????????public?static?DataSet?Query(string?SQLString,?params?SqlParameter[]?cmdParms) ??????????{ ??????????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString)) ??????????????{ ??????????????????SqlCommand?cmd?=?new?SqlCommand(); ??????????????????PrepareCommand(cmd,?connection,?null,?SQLString,?cmdParms); ??????????????????using?(SqlDataAdapter?da?=?new?SqlDataAdapter(cmd)) ??????????????????{ ??????????????????????DataSet?ds?=?new?DataSet(); ??????????????????????try??????????????????????{ ??????????????????????????da.Fill(ds,?"ds"); ??????????????????????????cmd.Parameters.Clear(); ??????????????????????} ??????????????????????catch?(System.Data.SqlClient.SqlException?E) ??????????????????????{ ??????????????????????????throw?new?Exception(E.Message); ????????????????????????????????????????????????} ??????????????????????return?ds; ??????????????????} ??????????????} ??????????} ??????????????private?static?void?PrepareCommand(SqlCommand?cmd,?SqlConnection?conn,?SqlTransaction?trans,?string?cmdText,?SqlParameter[]?cmdParms) ??????????{ ??????????????if?(conn.State?!=?ConnectionState.Open) ??????????????????conn.Open(); ??????????????cmd.Connection?=?conn; ??????????????cmd.CommandText?=?cmdText; ??????????????if?(trans?!=?null) ??????????????????cmd.Transaction?=?trans; ??????????????cmd.CommandType?=?CommandType.Text;??????????????if?(cmdParms?!=?null) ??????????????{ ??????????????????????foreach?(SqlParameter?parameter?in?cmdParms) ??????????????????{ ??????????????????????if?((parameter.Direction?==?ParameterDirection.InputOutput?||?parameter.Direction?==?ParameterDirection.Input)?&& ??????????????????????????(parameter.Value?==?null)) ??????????????????????{ ??????????????????????????parameter.Value?=?DBNull.Value; ??????????????????????} ??????????????????????cmd.Parameters.Add(parameter); ??????????????????} ??????????????} ??????????} ??????????#endregion ??????????#region?存儲過程操作 ????????????????????????????????????????????????????????????????????????public?static?SqlDataReader?RunProcedure(string?storedProcName,?IDataParameter[]?parameters) ??????????{ ??????????????SqlConnection?connection?=?new?SqlConnection(connectionString); ??????????????SqlDataReader?returnReader; ??????????????connection.Open(); ??????????????SqlCommand?command?=?BuildQueryCommand(connection,?storedProcName,?parameters); ??????????????command.CommandType?=?CommandType.StoredProcedure; ??????????????returnReader?=?command.ExecuteReader(); ????????????????????????????return?returnReader; ????????????} ????????????????????????????????????????????????????????????????????????????????????public?static?DataSet?RunProcedure(string?storedProcName,?IDataParameter[]?parameters,?string?tableName) ??????????{ ??????????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString)) ??????????????{ ??????????????????DataSet?dataSet?=?new?DataSet(); ??????????????????connection.Open(); ??????????????????SqlDataAdapter?sqlDA?=?new?SqlDataAdapter(); ??????????????????sqlDA.SelectCommand?=?BuildQueryCommand(connection,?storedProcName,?parameters); ??????????????????sqlDA.Fill(dataSet,?tableName); ??????????????????connection.Close(); ??????????????????return?dataSet; ??????????????} ??????????} ??????????public?static?DataSet?RunProcedure(string?storedProcName,?IDataParameter[]?parameters,?string?tableName,?int?Times) ??????????{ ??????????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString)) ??????????????{ ??????????????????DataSet?dataSet?=?new?DataSet(); ??????????????????connection.Open(); ??????????????????SqlDataAdapter?sqlDA?=?new?SqlDataAdapter(); ??????????????????sqlDA.SelectCommand?=?BuildQueryCommand(connection,?storedProcName,?parameters); ??????????????????sqlDA.SelectCommand.CommandTimeout?=?Times; ??????????????????sqlDA.Fill(dataSet,?tableName); ??????????????????connection.Close(); ??????????????????return?dataSet; ??????????????} ??????????} ??????????????????????????????????????????????????????????????????????public?static?string?RunProcedureState(string?storedProcName,?IDataParameter[]?parameters) ??????????{ ??????????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString)) ??????????????{ ????????????????????connection.Open(); ??????????????????SqlDataAdapter?sqlDA?=?new?SqlDataAdapter(); ??????????????????sqlDA.SelectCommand?=?BuildQueryCommand(connection,?storedProcName,?parameters); ??????????????????sqlDA.SelectCommand.Parameters.Add(new?SqlParameter("ReturnValue",?SqlDbType.Int,?4,?ParameterDirection.ReturnValue,?false,?0,?0,?string.Empty,?DataRowVersion.Default,?null));???????????????????sqlDA.SelectCommand.ExecuteNonQuery(); ??????????????????connection.Close(); ??????????????????return?sqlDA.SelectCommand.Parameters["ReturnValue"].Value.ToString(); ??????????????} ??????????} ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????public?static?DataSet?GetPageDataList(string?PrimaryKey,?string?Fields,?string?TableNames,?string?Filter,?string?Order,?int?PageSize,?int?CurrentPage) ??????????{ ??????????????string?tableName?=?"viewPage"; ??????????????string?storedProcName?=?"P_viewPage"; ??????????????IDataParameter[]?p?=?new?IDataParameter[8]; ??????????????p[0]?=?new?SqlParameter("TableNames",?TableNames); ??????????????p[1]?=?new?SqlParameter("PrimaryKey",?PrimaryKey); ??????????????p[2]?=?new?SqlParameter("Fields",?Fields); ??????????????p[3]?=?new?SqlParameter("PageSize",?PageSize); ??????????????p[4]?=?new?SqlParameter("CurrentPage",?CurrentPage?-?1); ??????????????p[5]?=?new?SqlParameter("Filter",?Filter); ??????????????p[6]?=?new?SqlParameter("Group",?""); ??????????????p[7]?=?new?SqlParameter("Order",?Order); ????????????????return?RunProcedure(storedProcName,?p,?tableName); ??????????} ??????????public?static?DataSet?GetPageDataList(string?PrimaryKey,?string?Fields,?string?TableNames,?string?Filter,?string?Order,?int?PageSize,?int?CurrentPage,?string?Group) ??????????{ ??????????????string?tableName?=?"viewPage"; ??????????????string?storedProcName?=?"P_viewPage"; ??????????????IDataParameter[]?p?=?new?IDataParameter[8]; ??????????????p[0]?=?new?SqlParameter("TableNames",?TableNames); ??????????????p[1]?=?new?SqlParameter("PrimaryKey",?PrimaryKey); ??????????????p[2]?=?new?SqlParameter("Fields",?Fields); ??????????????p[3]?=?new?SqlParameter("PageSize",?PageSize); ??????????????p[4]?=?new?SqlParameter("CurrentPage",?CurrentPage?-?1); ??????????????p[5]?=?new?SqlParameter("Filter",?Filter); ??????????????p[6]?=?new?SqlParameter("Group",?Group); ??????????????p[7]?=?new?SqlParameter("Order",?Order); ????????????????return?RunProcedure(storedProcName,?p,?tableName); ??????????} ?????????????????????????????????public?static?DataSet?GetPageDataList2(string?PrimaryKey,?string?FieldList,?string?TableName,?string?Where,?string?Order,?int?PageSize,?int?PageIndex) ??????????{ ??????????????string?tableName?=?"viewPage"; ??????????????string?storedProcName?=?"P_viewPage2"; ??????????????IDataParameter[]?p?=?new?IDataParameter[11]; ??????????????p[0]?=?new?SqlParameter("TableName",?TableName); ??????????????p[1]?=?new?SqlParameter("FieldList",?FieldList); ??????????????p[2]?=?new?SqlParameter("PrimaryKey",?PrimaryKey); ??????????????p[3]?=?new?SqlParameter("Where",?Where); ??????????????p[4]?=?new?SqlParameter("Order",?Order); ??????????????p[5]?=?new?SqlParameter("SortType",?3); ??????????????p[6]?=?new?SqlParameter("RecorderCount",?0); ??????????????p[7]?=?new?SqlParameter("PageSize",?PageSize); ??????????????p[8]?=?new?SqlParameter("PageIndex",?PageIndex); ??????????????p[9]?=?new?SqlParameter("TotalCount",?0); ??????????????p[10]?=?new?SqlParameter("TotalPageCount",?0); ??????????????????return?RunProcedure(storedProcName,?p,?tableName); ??????????} ??????????????????????????????????????????????????????????????????????????????????private?static?SqlCommand?BuildQueryCommand(SqlConnection?connection,?string?storedProcName,?IDataParameter[]?parameters) ??????????{ ??????????????SqlCommand?command?=?new?SqlCommand(storedProcName,?connection); ??????????????command.CommandType?=?CommandType.StoredProcedure; ??????????????foreach?(SqlParameter?parameter?in?parameters) ??????????????{ ??????????????????if?(parameter?!=?null) ??????????????????{ ????????????????????????????????????????????if?((parameter.Direction?==?ParameterDirection.InputOutput?||?parameter.Direction?==?ParameterDirection.Input)?&& ??????????????????????????(parameter.Value?==?null)) ??????????????????????{ ??????????????????????????parameter.Value?=?DBNull.Value; ??????????????????????} ??????????????????????command.Parameters.Add(parameter); ??????????????????} ??????????????} ????????????????return?command; ??????????} ??????????????????????????????????????????????????????????????????????????????????public?static?int?RunProcedure(string?storedProcName,?IDataParameter[]?parameters,?out?int?rowsAffected) ??????????{ ??????????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString)) ??????????????{ ??????????????????int?result; ??????????????????connection.Open(); ??????????????????SqlCommand?command?=?BuildIntCommand(connection,?storedProcName,?parameters); ??????????????????rowsAffected?=?command.ExecuteNonQuery(); ??????????????????result?=?(int)command.Parameters["ReturnValue"].Value; ????????????????????????????????????return?result; ??????????????} ??????????} ????????????????????????????????????????????????????????????????????????private?static?SqlCommand?BuildIntCommand(SqlConnection?connection,?string?storedProcName,?IDataParameter[]?parameters) ??????????{ ??????????????SqlCommand?command?=?BuildQueryCommand(connection,?storedProcName,?parameters); ??????????????command.Parameters.Add(new?SqlParameter("ReturnValue", ??????????????????SqlDbType.Int,?4,?ParameterDirection.ReturnValue, ??????????????????false,?0,?0,?string.Empty,?DataRowVersion.Default,?null)); ??????????????return?command; ??????????} ?????????#endregion ??????????#region?SQL語句式分頁 ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????public?static?DataSet?GetPageDataListSQL(string?primaryKey,?string?queryFields,?string?tableName,?string?condition,?string?orderBy,?int?pageSize,?int?pageIndex) ??????????{ ??????????????string?strTmp?=?"";???????????????string?SqlSelect?=?"",?SqlPrimaryKeySelect?=?"",?strOrderBy?=?"",?strWhere?=?"?where?1=1?",?strTop?=?""; ??????????????????????????????????????????????????????????????????????????????????????????????????SqlSelect?=?"?select?top?{0}?{1}?from?{2}?{3}?{4}?{5}"; ????????????????????????????????????????????????????????????????????????????????????SqlPrimaryKeySelect?=?"?and?{0}?not?in?(select?{1}?{0}?from?{2}?{3}?{4})?"; ????????????????if?(orderBy?!=?"") ??????????????????strOrderBy?=?"?order?by?"?+?orderBy; ??????????????if?(condition?!=?"") ??????????????????strWhere?+=?"?and?"?+?condition; ??????????????int?pageindexsize?=?(pageIndex?-?1)?*?pageSize; ??????????????if?(pageindexsize?>?0) ??????????????{ ??????????????????strTop?=?"?top?"?+?pageindexsize.ToString(); ????????????????????SqlPrimaryKeySelect?=?String.Format(SqlPrimaryKeySelect,?primaryKey,?strTop,?tableName,?strWhere,?strOrderBy); ????????????????????strTmp?=?String.Format(SqlSelect,?pageSize.ToString(),?queryFields,?tableName,?strWhere,?SqlPrimaryKeySelect,?strOrderBy); ????????????????} ??????????????else??????????????{ ??????????????????strTmp?=?String.Format(SqlSelect,?pageSize.ToString(),?queryFields,?tableName,?strWhere,?"",?strOrderBy); ????????????????} ??????????????return?Query(strTmp); ??????????}??? ?????????#endregion ?????????#region?獲取安全的SQL字符串 ????????????????????????????????????????????????????????????public?static?string?GetSafeSQLString(string?sql) ??????????{ ??????????????sql?=?sql.Replace(",",?","); ??????????????sql?=?sql.Replace(".",?"。"); ??????????????sql?=?sql.Replace("(",?"("); ??????????????sql?=?sql.Replace(")",?")"); ??????????????sql?=?sql.Replace(">",?">"); ??????????????sql?=?sql.Replace("<",?"<"); ??????????????sql?=?sql.Replace("-",?"-"); ??????????????sql?=?sql.Replace("+",?"+"); ??????????????sql?=?sql.Replace("=",?"="); ??????????????sql?=?sql.Replace("?",?"?"); ??????????????sql?=?sql.Replace("*",?"*"); ??????????????sql?=?sql.Replace("|",?"|"); ??????????????sql?=?sql.Replace("&",?"&"); ??????????????return?sql; ??????????} ?????????#endregion ??????} ????}?? ?
@數據列表插入操作:
c# 代碼
public?void?GetDateList() ??{ ??????string?table?=?"Users"; ??????string?where?=?"?1=1?"; ????????AspNetPager1.RecordCount?=?DbHelperSQL.GetDataRecordCount("UserID",?table,?where);??????????DataTable?dt?=?DbHelperSQL.GetPageDataList("UserID",?"*",?table,?where,?"id?desc",?AspNetPager1.PageSize,?AspNetPager1.CurrentPageIndex).Tables[0];??????this.GVList.DataSource?=?dt; ??????this.GVList.DataBind(); ??} ?? ?
@插入操作【我這里用到的是存儲過程】
c# 代碼
??????????????????????????public?string?InsertTB_Article(int?AttributeID,?string?Links,?int?TeamBuyInfoID,?string?Title,?string?Content,?string?MemberName,?int?MemberID) ??{ ??????IDataParameter[]?p?=?new?IDataParameter[7]; ??????p[0]?=?new?SqlParameter("AttributeID",?AttributeID); ??????p[1]?=?new?SqlParameter("Links",?Links); ??????p[2]?=?new?SqlParameter("TeamBuyInfoID",?TeamBuyInfoID); ??????p[3]?=?new?SqlParameter("Title",?Title); ??????p[4]?=?new?SqlParameter("Content",?Content); ??????p[5]?=?new?SqlParameter("MemberName",?MemberName); ??????p[6]?=?new?SqlParameter("MemberID",?MemberID); ??????????return?DbHelperSQL.RunProcedureState("Proc_Add_TB_Article",?p); ??} ?? 另外我里面有3個分頁程序,2個是需要用到存儲過程,另一個是由ACCESS演化而來,效率上不比存儲過程差
sql 代碼
??CREATE?Procedure?P_viewPage ???/*?Param?List?*/ ??@TableNames?VARCHAR(200),??????@PrimaryKey?VARCHAR(100),??????@Fields????VARCHAR(200),??????????@PageSize?INT,??????????????@CurrentPage?INT,??????????@Filter?VARCHAR(200)?=?'',??????@Group?VARCHAR(200)?=?'',??????@Order?VARCHAR(200)?=?''??????AS??BEGIN??????DECLARE?@SortColumn?VARCHAR(200) ??????DECLARE?@Operator?CHAR(2) ??????DECLARE?@SortTable?VARCHAR(200) ??????DECLARE?@SortName?VARCHAR(200) ??????IF?@Fields?=?''??????????SET?@Fields?=?'*' ??????IF?@Filter?=?''??????????SET?@Filter?=?'WHERE?1=1' ??????ELSE??????????SET?@Filter?=?'WHERE?'?+??@Filter ??????IF?@Group?<>''??????????SET?@Group?=?'GROUP?BY?'?+?@Group????????IF?@Order?<>?''??????BEGIN??????????DECLARE?@pos1?INT,?@pos2?INT??????????SET?@Order?=?REPLACE(REPLACE(@Order,?'?asc',?'?ASC'),?'?desc',?'?DESC') ??????????IF?CHARINDEX('?DESC',?@Order)?>?0 ??????????????IF?CHARINDEX('?ASC',?@Order)?>?0 ??????????????BEGIN??????????????????IF?CHARINDEX('?DESC',?@Order)?<?CHARINDEX('?ASC',?@Order) ??????????????????????SET?@Operator?=?'<=' ??????????????????ELSE??????????????????????SET?@Operator?=?'>=' ??????????????END??????????????ELSE??????????????????SET?@Operator?=?'<=' ??????????ELSE??????????????SET?@Operator?=?'>=' ??????????SET?@SortColumn?=?REPLACE(REPLACE(REPLACE(@Order,?'?ASC',?''),?'?DESC',?''),?'?',?'') ??????????SET?@pos1?=?CHARINDEX(',',?@SortColumn) ??????????IF?@pos1?>?0 ??????????????SET?@SortColumn?=?SUBSTRING(@SortColumn,?1,?@pos1-1) ??????????SET?@pos2?=?CHARINDEX('.',?@SortColumn) ??????????IF?@pos2?>?0 ??????????BEGIN??????????????SET?@SortTable?=?SUBSTRING(@SortColumn,?1,?@pos2-1) ??????????????IF?@pos1?>?0? ??????????????????SET?@SortName?=?SUBSTRING(@SortColumn,?@pos2+1,?@pos1-@pos2-1) ??????????????ELSE??????????????????SET?@SortName?=?SUBSTRING(@SortColumn,?@pos2+1,?LEN(@SortColumn)-@pos2) ??????????END??????????ELSE??????????BEGIN??????????????SET?@SortTable?=?@TableNames ??????????????SET?@SortName?=?@SortColumn ??????????END??????END??????ELSE??????BEGIN??????????SET?@SortColumn?=?@PrimaryKey ??????????SET?@SortTable?=?@TableNames ??????????SET?@SortName?=?@SortColumn ??????????SET?@Order?=?@SortColumn ??????????SET?@Operator?=?'>=' ??????END????????DECLARE?@type?varchar(50) ??????DECLARE?@prec?int??????SELECT?@type=t.name,?@prec=c.prec ??????FROM?sysobjects?o? ??????JOIN?syscolumns?c?on?o.id=c.id ??????JOIN?systypes?t?on?c.xusertype=t.xusertype ??????WHERE?o.name?=?@SortTable?AND?c.name?=?@SortName ??????IF?CHARINDEX('char',?@type)?>?0 ??????SET?@type?=?@type?+?'('?+?CAST(@prec?AS?varchar)?+?')' ????????DECLARE?@TopRows?INT??????SET?@TopRows?=?@PageSize?*?@CurrentPage?+1 ??????print?@TopRows ??????print?@Operator ??????EXEC(' ??????????DECLARE?@SortColumnBegin?'?+?@type?+?' ??????????SET?ROWCOUNT?'?+?@TopRows?+?' ??????????SELECT?@SortColumnBegin='?+?@SortColumn?+?'?FROM??'?+?@TableNames?+?'?'?+?@Filter?+?'?'?+?@Group?+?'?ORDER?BY?'?+?@Order?+?' ??????????SET?ROWCOUNT?'?+?@PageSize?+?' ??????????SELECT?'?+?@Fields?+?'?FROM??'?+?@TableNames?+?'?'?+?@Filter??+?'?AND?'?+?@SortColumn?+?''?+?@Operator?+?'@SortColumnBegin?'?+?@Group?+?'?ORDER?BY?'?+?@Order?+?'???? ??????')???? ??END??GO ??SET?QUOTED_IDENTIFIER?OFF? ??GO ??SET?ANSI_NULLS?ON? ??GO ????SET?QUOTED_IDENTIFIER?ON? ??GO ??SET?ANSI_NULLS?OFF? ??GO ????CREATE?PROC?P_viewPage2 ??/* ??nzperfect?[no_mIss]?高效通用分頁存儲過程(雙向檢索)?2007.5.7??QQ:34813284 ??敬告:適用于單一主鍵或存在唯一值列的表或視圖 ??ps:Sql語句為8000字節,調用時請注意傳入參數及sql總長度不要超過指定范圍 ??*/ ??@TableName?VARCHAR(200),???????@FieldList?VARCHAR(2000),??????@PrimaryKey?VARCHAR(100),??????@Where?VARCHAR(2000),??????????@Order?VARCHAR(1000),????????????@SortType?INT,?????????????????@RecorderCount?INT,????????????@PageSize?INT,?????????????????@PageIndex?INT,????????????????@TotalCount?INT?OUTPUT,????????@TotalPageCount?INT?OUTPUT?????AS??SET?NOCOUNT?ON??IF?ISNULL(@TotalCount,'')?=?''?SET?@TotalCount?=?0 ??SET?@Order?=?RTRIM(LTRIM(@Order)) ??SET?@PrimaryKey?=?RTRIM(LTRIM(@PrimaryKey)) ??SET?@FieldList?=?REPLACE(RTRIM(LTRIM(@FieldList)),'?','') ??WHILE?CHARINDEX(',?',@Order)?>?0?OR?CHARINDEX('?,',@Order)?>?0 ??BEGIN??SET?@Order?=?REPLACE(@Order,',?',',') ??SET?@Order?=?REPLACE(@Order,'?,',',') ??END??IF?ISNULL(@TableName,'')?=?''?OR?ISNULL(@FieldList,'')?=?''??OR?ISNULL(@PrimaryKey,'')?=?''??OR?@SortType?<?1?OR?@SortType?>3 ??OR?@RecorderCount??<?0?OR?@PageSize?<?0?OR?@PageIndex?<?0 ??BEGIN??PRINT('ERR_00') ??RETURN??END??IF?@SortType?=?3 ??BEGIN??IF?(UPPER(RIGHT(@Order,4))!='?ASC'?AND?UPPER(RIGHT(@Order,5))!='?DESC') ??BEGIN?PRINT('ERR_02')?RETURN?END??END??DECLARE?@new_where1?VARCHAR(1000) ??DECLARE?@new_where2?VARCHAR(1000) ??DECLARE?@new_order1?VARCHAR(1000) ??DECLARE?@new_order2?VARCHAR(1000) ??DECLARE?@new_order3?VARCHAR(1000) ??DECLARE?@Sql?VARCHAR(8000) ??DECLARE?@SqlCount?NVARCHAR(4000) ??IF?ISNULL(@where,'')?=?''??BEGIN??SET?@new_where1?=?'?' ??SET?@new_where2?=?'?WHERE??' ??END??ELSE??BEGIN??SET?@new_where1?=?'?WHERE?'?+?@where??SET?@new_where2?=?'?WHERE?'?+?@where?+?'?AND?' ??END??IF?ISNULL(@order,'')?=?''?OR?@SortType?=?1??OR?@SortType?=?2 ??BEGIN??IF?@SortType?=?1 ??BEGIN??SET?@new_order1?=?'?ORDER?BY?'?+?@PrimaryKey?+?'?ASC' ??SET?@new_order2?=?'?ORDER?BY?'?+?@PrimaryKey?+?'?DESC' ??END??IF?@SortType?=?2 ??BEGIN??SET?@new_order1?=?'?ORDER?BY?'?+?@PrimaryKey?+?'?DESC' ??SET?@new_order2?=?'?ORDER?BY?'?+?@PrimaryKey?+?'?ASC' ??END??END??ELSE??BEGIN??SET?@new_order1?=?'?ORDER?BY?'?+?@Order??END??IF?@SortType?=?3?AND??CHARINDEX(','+@PrimaryKey+'?',','+@Order)>0 ??BEGIN??SET?@new_order1?=?'?ORDER?BY?'?+?@Order??SET?@new_order2?=?@Order?+?',' ??SET?@new_order2?=?REPLACE(REPLACE(@new_order2,'ASC,','{ASC},'),'DESC,','{DESC},') ??SET?@new_order2?=?REPLACE(REPLACE(@new_order2,'{ASC},','DESC,'),'{DESC},','ASC,') ??SET?@new_order2?=?'?ORDER?BY?'?+?SUBSTRING(@new_order2,1,LEN(@new_order2)-1) ??IF?@FieldList?<>?'*' ??BEGIN??SET?@new_order3?=?REPLACE(REPLACE(@Order?+?',','ASC,',','),'DESC,',',') ??SET?@FieldList?=?','?+?@FieldList ??WHILE?CHARINDEX(',',@new_order3)>0 ??BEGIN??IF?CHARINDEX(SUBSTRING(','+@new_order3,1,CHARINDEX(',',@new_order3)),','+@FieldList+',')>0 ??BEGIN??SET?@FieldList?= ??@FieldList?+?','?+?SUBSTRING(@new_order3,1,CHARINDEX(',',@new_order3)) ??END??SET?@new_order3?= ??SUBSTRING(@new_order3,CHARINDEX(',',@new_order3)+1,LEN(@new_order3)) ??END??SET?@FieldList?=?SUBSTRING(@FieldList,2,LEN(@FieldList)) ??END??END??SET?@SqlCount?=?'SELECT?@TotalCount=COUNT(*),@TotalPageCount=CEILING((COUNT(*)+0.0)/' ??+?CAST(@PageSize?AS?VARCHAR)+')?FROM?'?+?@TableName?+?@new_where1 ????BEGIN??EXEC?SP_EXECUTESQL?@SqlCount,N'@TotalCount?INT?OUTPUT,@TotalPageCount?INT?OUTPUT', ??@TotalCount?OUTPUT,@TotalPageCount?OUTPUT??END????IF?@PageIndex?>?CEILING((@TotalCount+0.0)/@PageSize) ??BEGIN??SET?@PageIndex?=??CEILING((@TotalCount+0.0)/@PageSize) ??END??IF?@PageIndex?=?1?OR?@PageIndex?>=?CEILING((@TotalCount+0.0)/@PageSize) ??BEGIN??IF?@PageIndex?=?1???BEGIN??SET?@Sql?=?'SELECT?TOP?'?+?STR(@PageSize)?+?'?'?+?@FieldList?+?'?FROM?' ??+?@TableName?+?@new_where1?+?@new_order1 ??END??IF?@PageIndex?>=?CEILING((@TotalCount+0.0)/@PageSize)????BEGIN??SET?@Sql?=?'SELECT?TOP?'?+?STR(@PageSize)?+?'?'?+?@FieldList?+?'?FROM?(' ??+?'SELECT?TOP?'?+?STR(ABS(@PageSize*@PageIndex-@TotalCount-@PageSize)) ??+?'?'?+?@FieldList?+?'?FROM?' ??+?@TableName?+?@new_where1?+?@new_order2?+?'?)?AS?TMP?' ??+?@new_order1 ??END??END??ELSE??BEGIN??IF?@SortType?=?1????BEGIN??IF?@PageIndex?<=?CEILING((@TotalCount+0.0)/@PageSize)/2????BEGIN??SET?@Sql?=?'SELECT?TOP?'?+?STR(@PageSize)?+?'?'?+?@FieldList?+?'?FROM?' ??+?@TableName?+?@new_where2?+?@PrimaryKey?+?'?>?' ??+?'(SELECT?MAX('?+?@PrimaryKey?+?')?FROM?(SELECT?TOP?' ??+?STR(@PageSize*(@PageIndex-1))?+?'?'?+?@PrimaryKey ??+?'?FROM?'?+?@TableName ??+?@new_where1?+?@new_order1?+'?)?AS?TMP)?'+?@new_order1 ??END??ELSE????BEGIN??SET?@Sql?=?'SELECT?TOP?'?+?STR(@PageSize)?+?'?'?+?@FieldList?+?'?FROM?(' ??+?'SELECT?TOP?'?+?STR(@PageSize)?+?'?' ??+?@FieldList?+?'?FROM?' ??+?@TableName?+?@new_where2?+?@PrimaryKey?+?'?<?' ??+?'(SELECT?MIN('?+?@PrimaryKey?+?')?FROM?(SELECT?TOP?' ??+?STR(@TotalCount-@PageSize*@PageIndex)?+?'?'?+?@PrimaryKey ??+?'?FROM?'?+?@TableName ??+?@new_where1?+?@new_order2?+'?)?AS?TMP)?'+?@new_order2 ??+?'?)?AS?TMP?'?+?@new_order1 ??END??END??IF?@SortType?=?2????BEGIN??IF?@PageIndex?<=?CEILING((@TotalCount+0.0)/@PageSize)/2????BEGIN??SET?@Sql?=?'SELECT?TOP?'?+?STR(@PageSize)?+?'?'?+?@FieldList?+?'?FROM?' ??+?@TableName?+?@new_where2?+?@PrimaryKey?+?'?<?' ??+?'(SELECT?MIN('?+?@PrimaryKey?+?')?FROM?(SELECT?TOP?' ??+?STR(@PageSize*(@PageIndex-1))?+?'?'?+?@PrimaryKey ??+'?FROM?'+?@TableName ??+?@new_where1?+?@new_order1?+?')?AS?TMP)?'+?@new_order1 ??END??ELSE????BEGIN??SET?@Sql?=?'SELECT?TOP?'?+?STR(@PageSize)?+?'?'?+?@FieldList?+?'?FROM?(' ??+?'SELECT?TOP?'?+?STR(@PageSize)?+?'?' ??+?@FieldList?+?'?FROM?' ??+?@TableName?+?@new_where2?+?@PrimaryKey?+?'?>?' ??+?'(SELECT?MAX('?+?@PrimaryKey?+?')?FROM?(SELECT?TOP?' ??+?STR(@TotalCount-@PageSize*@PageIndex)?+?'?'?+?@PrimaryKey ??+?'?FROM?'?+?@TableName ??+?@new_where1?+?@new_order2?+'?)?AS?TMP)?'+?@new_order2 ??+?'?)?AS?TMP?'?+?@new_order1 ??END??END??IF?@SortType?=?3????BEGIN??IF?CHARINDEX(','?+?@PrimaryKey?+?'?',','?+?@Order)?=?0 ??BEGIN?PRINT('ERR_02')?RETURN?END??IF?@PageIndex?<=?CEILING((@TotalCount+0.0)/@PageSize)/2????BEGIN??SET?@Sql?=?'SELECT?TOP?'?+?STR(@PageSize)?+?'?'?+?@FieldList?+?'?FROM?(?' ??+?'SELECT?TOP?'?+?STR(@PageSize)?+?'?'?+?@FieldList?+?'?FROM?(?' ??+?'?SELECT?TOP?'?+?STR(@PageSize*@PageIndex)?+?'?'?+?@FieldList ??+?'?FROM?'?+?@TableName?+?@new_where1?+?@new_order1?+?'?)?AS?TMP?' ??+?@new_order2?+?'?)?AS?TMP?'?+?@new_order1 ??END??ELSE????BEGIN??SET?@Sql?=?'SELECT?TOP?'?+?STR(@PageSize)?+?'?'?+?@FieldList?+?'?FROM?(?' ??+?'SELECT?TOP?'?+?STR(@PageSize)?+?'?'?+?@FieldList?+?'?FROM?(?' ??+?'?SELECT?TOP?'?+?STR(@TotalCount-@PageSize?*@PageIndex+@PageSize)?+?'?'?+?@FieldList ??+?'?FROM?'?+?@TableName?+?@new_where1?+?@new_order2?+?'?)?AS?TMP?' ??+?@new_order1?+?'?)?AS?TMP?'?+?@new_order1 ??END??END??END??EXEC(@Sql) ??GO ??SET?QUOTED_IDENTIFIER?OFF? ??GO ??SET?ANSI_NULLS?ON? ??
轉載于:https://www.cnblogs.com/liufei88866/archive/2009/06/26/1511605.html
總結
以上是生活随笔為你收集整理的MSSQL数据库C#操作类(SQLHELPER类的修改版)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。