分享C#中几个可用的类

时间:2022-02-12 11:39:17

本文实例为大家介绍了几个可用的类,供大家参考,具体内容如下

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类(可生成自己的控件) 

分享C#中几个可用的类

?
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("哈哈");
}

以上就是本文的全部内容,希望对大家的学习有所帮助。