程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 分享C#中幾個可用的類

分享C#中幾個可用的類

編輯:關於C語言

本文實例為大家介紹了幾個可用的類,供大家參考,具體內容如下

1.SQLHelper類

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClIEnt; using System.Data; using System.Configuration; namespace MySchool.DAL { public static class SQLHelper { //用靜態的方法調用的時候不用創建SQLHelper的實例 //Execetenonquery // public static string Constr = "server=HAPPYPIG\\SQLMODEL;database=shooltest;uid=sa;"; public static string Constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; public static int id; /// <summary> /// 執行NonQuery命令 /// </summary> /// <param name="cmdTxt"></param> /// <param name="parames"></param> /// <returns></returns> public static int ExecuteNonQuery(string cmdTxt, params SqlParameter[] parames) { return ExecuteNonQuery(cmdTxt, CommandType.Text, parames); } //可以使用存儲過程的ExecuteNonquery public static int ExecuteNonQuery(string cmdTxt, CommandType cmdtype, params SqlParameter[] parames) { //判斷腳本是否為空 ,直接返回0 if (string.IsNullOrEmpty(cmdTxt)) { return 0; } using (SqlConnection con = new SqlConnection(Constr)) { using (SqlCommand cmd = new SqlCommand(cmdTxt, con)) { if (parames != null) { cmd.CommandType = cmdtype; cmd.Parameters.AddRange(parames); } con.Open(); return cmd.ExecuteNonQuery(); } } } public static SqlDataReader ExecuteDataReader(string cmdTxt, params SqlParameter[] parames) { return ExecuteDataReader(cmdTxt, CommandType.Text, parames); } //SQLDataReader存儲過程方法 public static SqlDataReader ExecuteDataReader(string cmdTxt, CommandType cmdtype, params SqlParameter[] parames) { if (string.IsNullOrEmpty(cmdTxt)) { return null; } SqlConnection con = new SqlConnection(Constr); using (SqlCommand cmd = new SqlCommand(cmdTxt, con)) { cmd.CommandType = cmdtype; if (parames != null) { cmd.Parameters.AddRange(parames); } con.Open(); //把reader的行為加進來。當reader釋放資源的時候,con也被一塊關閉 return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); } } public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parames) { return ExecuteDataTable(sql, CommandType.Text, parames); } //調用存儲過程的類,關於(ExecuteDataTable) public static DataTable ExecuteDataTable(string sql, CommandType cmdType, params SqlParameter[] parames) { if (string.IsNullOrEmpty(sql)) { return null; } DataTable dt = new DataTable(); using (SqlDataAdapter da = new SqlDataAdapter(sql, Constr)) { da.SelectCommand.CommandType = cmdType; if (parames != null) { da.SelectCommand.Parameters.AddRange(parames); } da.Fill(dt); return dt; } } /// <summary> /// ExecuteScalar /// </summary> /// <param name="cmdTxt">第一個參數,SQLServer語句</param> /// <param name="parames">第二個參數,傳遞0個或者多個參數</param> /// <returns></returns> public static object ExecuteScalar(string cmdTxt, params SqlParameter[] parames) { return ExecuteScalar(cmdTxt, CommandType.Text, parames); } //可使用存儲過程的ExecuteScalar public static object ExecuteScalar(string cmdTxt, CommandType cmdtype, params SqlParameter[] parames) { if (string.IsNullOrEmpty(cmdTxt)) { return null; } using (SqlConnection con = new SqlConnection(Constr)) { using (SqlCommand cmd = new SqlCommand(cmdTxt, con)) { cmd.CommandType = cmdtype; if (parames != null) { cmd.Parameters.AddRange(parames); } con.Open(); return cmd.ExecuteScalar(); } } } //調用存儲過程的DBHelper類(關於ExeceutScalar,包含事務,只能處理Int類型,返回錯誤號) public static object ExecuteScalar(string cmdTxt, CommandType cmdtype,SqlTransaction sqltran, params SqlParameter[] parames) { if (string.IsNullOrEmpty(cmdTxt)) { return 0; } using (SqlConnection con = new SqlConnection(Constr)) { int sum = 0; using (SqlCommand cmd = new SqlCommand(cmdTxt, con)) { cmd.CommandType=cmdtype; if (parames != null) { cmd.Parameters.AddRange(parames); } con.Open(); sqltran = con.BeginTransaction(); try { cmd.Transaction = sqltran; sum=Convert.ToInt32( cmd.ExecuteScalar()); sqltran.Commit(); } catch (SqlException ex) { sqltran.Rollback(); } return sum; } } } } }

例如:

? 1 2 3 4 5 6 7 //以返回表的方式加載下拉框 public DataTable LoadCombox() { string sql = "select * from Grade"; DataTable dt = SQLHelper.ExecuteDataTable(sql); return dt; }

2.MyTool類(DataTable轉List<>)

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClIEnt; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace MySchool.DAL { public class MyTool { /// <summary> /// DataSetToList /// </summary> /// <typeparam name="T">轉換類型</typeparam> /// <param name="dataSet">數據源</param> /// <param name="tableIndex">需要轉換表的索引</param> /// <returns></returns> public List<T> DataTableToList<T>(DataTable dt) { //確認參數有效 if (dt == null ) return null; List<T> list = new List<T>(); for (int i = 0; i < dt.Rows.Count; i++) { //創建泛型對象 T _t = Activator.CreateInstance<T>(); //獲取對象所有屬性 PropertyInfo[] propertyInfo = _t.GetType().GetPropertIEs(); for (int j = 0; j < dt.Columns.Count; j++) { foreach (PropertyInfo info in propertyInfo) { //屬性名稱和列名相同時賦值 if (dt.Columns[j].ColumnName.ToUpper().Equals(info.Name.ToUpper())) { if (dt.Rows[i][j] != DBNull.Value) { info.SetValue(_t, dt.Rows[i][j], null); } else { info.SetValue(_t, null, null); } break; } } } list.Add(_t); } return list; } } }

例如:

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public List<Grade> Loadcombox2() { string sql = "select * from Grade"; DataTable dt = SQLHelper.ExecuteDataTable(sql); //方法一: foreach (DataRow row in dt.Rows) { //每一個row代表表中的一行,所以一行對應一個年級對象 Grade grade = new Grade(); grade.GradeId = Convert.ToInt32(row["gradeid"]); grade.GradeName = row["gradename"].ToString(); list.Add(grade); } //方法二:(使用MyTool類) MyTool tool=new MyTool(); list = tool.DataTableToList<Grade>(dt); return list; }

3.DGMsgDiv類(可生成自己的控件)

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; /// <summary> /// 消息條回調函數委托 /// </summary> public delegate void DGMsgDiv(); /// <summary> /// 消息條類 帶Timer計時 /// </summary> public class MsgDiv : System.Windows.Forms.Label { private Timer timerLable = new Timer(); /// <summary> /// 消息回調 委托對象 /// </summary> private DGMsgDiv dgCallBack = null; #region 計時器 /// <summary> /// 計時器 /// </summary> public Timer TimerMsg { get { return timerLable; } set { timerLable = value; } } #endregion #region MsgDiv構造函數 /// <summary> /// MsgDiv構造函數 /// </summary> public MsgDiv() { InitallMsgDiv(7, 7); } /// <summary> /// MsgDiv構造函數 /// </summary> /// <param name="x">定位x軸坐標</param> /// <param name="y">定位y軸坐標</param> public MsgDiv(int x, int y) { InitallMsgDiv(x, y); } #endregion #region 初始化消息條 /// <summary> /// 初始化消息條 /// </summary> private void InitallMsgDiv(int x, int y) { this.AutoSize = true; this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; //this.ContextMenuStrip = this.cmsList; this.Font = new System.Drawing.Font("宋體", 11F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.ForeColor = System.Drawing.Color.Red; this.Location = new System.Drawing.Point(x, y); this.MaximumSize = new System.Drawing.Size(980, 525); this.Name = "msgDIV"; this.Padding = new System.Windows.Forms.Padding(7); this.Size = new System.Drawing.Size(71, 31); this.TabIndex = 1; this.Text = "消息條"; this.Visible = false; //給委托添加事件 this.DoubleClick += new System.EventHandler(this.msgDIV_DoubleClick); this.MouseLeave += new System.EventHandler(this.msgDIV_MouseLeave); this.MouseHover += new System.EventHandler(this.msgDIV_MouseHover); this.timerLable.Interval = 1000; this.timerLable.Tick += new System.EventHandler(this.timerLable_Tick); } #endregion #region 將消息條添加到指定容器上 /// <summary> /// 將消息條添加到指定容器上Form /// </summary> /// <param name="form"></param> public void AddToControl(Form form) { form.Controls.Add(this); } /// <summary> /// 將消息條添加到指定容器上GroupBox /// </summary> /// <param name="form"></param> public void AddToControl(GroupBox groupBox) { groupBox.Controls.Add(this); } /// <summary> /// 將消息條添加到指定容器上Panel /// </summary> /// <param name="form"></param> public void AddToControl(Panel panel) { panel.Controls.Add(this); } #endregion //--------------------------------------------------------------------------- #region 消息顯示 的相關參數們 hiddenClick,countNumber,constCountNumber /// <summary> /// 當前顯示了多久的秒鐘數 /// </summary> int hiddenClick = 0; /// <summary> /// 要顯示多久的秒鐘數 可變參數 /// </summary> int countNumber = 3; /// <summary> /// 要顯示多久的秒鐘數 固定參數 /// </summary> int constCountNumber = 3; #endregion #region 計時器 顯示countNumber秒鐘後自動隱藏div -timerLable_Tick(object sender, EventArgs e) private void timerLable_Tick(object sender, EventArgs e) { if (hiddenClick > countNumber - 2) { MsgDivHidden(); } else { hiddenClick++; //RemainCount(); } } #endregion #region 隱藏消息框 並停止計時 +void MsgDivHidden() /// <summary> /// 隱藏消息框 並停止計時 /// </summary> public void MsgDivHidden() { this.Text = ""; this.Visible = false; this.hiddenClick = 0; //this.tslblRemainSecond.Text = ""; if (this.timerLable.Enabled == true) this.timerLable.Stop(); //調用 委托 然後清空委托 if (dgCallBack != null && dgCallBack.GetInvocationList().Length > 0) { dgCallBack(); dgCallBack -= dgCallBack; } } #endregion #region 在消息框中顯示消息字符串 +void MsgDivShow(string msg) /// <summary> /// 在消息框中顯示消息字符串 /// </summary> /// <param name="msg">要顯示的字符串</param> public void MsgDivShow(string msg) { this.Text = msg; this.Visible = true; this.countNumber = constCountNumber;//默認設置顯示秒數為10; this.hiddenClick = 0;//重置倒數描述 this.timerLable.Start(); } #endregion #region 在消息框中顯示消息字符串 並在消息消失時 調用回調函數 +void MsgDivShow(string msg, DGMsgDiv callback) /// <summary> /// 在消息框中顯示消息字符串 並在消息消失時 調用回調函數 /// </summary> /// <param name="msg">要顯示的字符串</param> /// <param name="callback">回調函數</param> public void MsgDivShow(string msg, DGMsgDiv callback) { MsgDivShow(msg); dgCallBack = callback; } #endregion #region 在消息框中顯示消息字符串 並在指定時間消息消失時 調用回調函數 +void MsgDivShow(string msg, int seconds, DGMsgDiv callback) /// <summary> /// 在消息框中顯示消息字符串 並在消息消失時 調用回調函數 /// </summary> /// <param name="msg">要顯示的字符串</param> /// <param name="seconds">消息顯示時間</param> /// <param name="callback">回調函數</param> public void MsgDivShow(string msg, int seconds, DGMsgDiv callback) { MsgDivShow(msg, seconds); dgCallBack = callback; } #endregion #region 在消息框中顯示消息字符串,並指定消息框顯示秒數 +void MsgDivShow(string msg, int seconds) /// <summary> /// 在消息框中顯示消息字符串,並指定消息框顯示秒數 /// </summary> /// <param name="msg">要顯示的字符串</param> /// <param name="seconds">消息框顯示秒數</param> public void MsgDivShow(string msg, int seconds) { this.Text = msg; this.Visible = true; this.countNumber = seconds; this.hiddenClick = 0;//重置倒數描述 this.timerLable.Start(); } #endregion //--------------------------------------------------------------------------- #region 事件們~~~! msgDIV_MouseHover,msgDIV_MouseLeave,msgDIV_DoubleClick //當鼠標停留在div上時 停止計時 private void msgDIV_MouseHover(object sender, EventArgs e) { if (this.timerLable.Enabled == true) this.timerLable.Stop(); } //當鼠標從div上移開時 繼續及時 private void msgDIV_MouseLeave(object sender, EventArgs e) { //當消息框正在顯示、回復框沒顯示、計時器正停止的時候,重新啟動計時器 if (this.Visible == true && this.timerLable.Enabled == false) this.timerLable.Start(); } //雙擊消息框時關閉消息框 private void msgDIV_DoubleClick(object sender, EventArgs e) { MsgDivHidden(); } #endregion }

例如:

? 1 2 3 4 5 6 7 8 9 10 private void Form1_Load(object sender, EventArgs e) { //首先顯示“呵呵”,3秒後 調用Test方法消息框顯示“哈哈” msgDiv1.MsgDivShow("呵呵",3,Test); } public void Test() { MessageBox.Show("哈哈"); }

以上就是本文的全部內容,希望對大家的學習有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved