分享C#中几个可用的类

作者:天尽头的那片海 时间:2023-08-10 10:47:17 

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

1.SQLHelper类


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;
}
}
}
}
}

例如:


//以返回表的方式加载下拉框
public DataTable LoadCombox()
{
string sql = "select * from Grade";
DataTable dt = SQLHelper.ExecuteDataTable(sql);
return dt;
}

2.MyTool类(DataTable转List<>)


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;
}
}
}

例如: 


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#中几个可用的类


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

}

例如:


private void Form1_Load(object sender, EventArgs e)
{
//首先显示“呵呵”,3秒后 调用Test方法消息框显示“哈哈”
msgDiv1.MsgDivShow("呵呵",3,Test);
}

public void Test()
{
MessageBox.Show("哈哈");
}

标签:C#,类
0
投稿

猜你喜欢

  • 关于fastjson的@JSONField注解的一些问题(详解)

    2021-11-23 09:09:34
  • Java线程同步Lock同步锁代码示例

    2023-11-17 13:23:54
  • Java Spring WEB应用实例化如何实现

    2022-05-20 04:26:35
  • Android RxJava创建操作符Timer的方法

    2022-04-22 13:10:26
  • Android防止按钮重复点击示例代码

    2023-10-11 18:15:24
  • Java中泛型的示例详解

    2023-10-27 02:54:24
  • 身份证号码验证算法深入研究和Java实现

    2023-05-18 08:17:42
  • Java如何实现List自定义排序

    2021-07-03 06:09:15
  • Unity UI实现循环播放序列图

    2023-03-14 15:51:10
  • springboot实现公众号接收回复消息和超过5秒被动回复消息

    2022-10-16 04:40:48
  • Flutter 实现虎牙/斗鱼 弹幕功能

    2023-07-11 04:11:11
  • 解析c#在未出现异常情况下查看当前调用堆栈的解决方法

    2023-05-18 02:54:04
  • 基于ArrayList源码解析(基于JDK1.8)

    2021-10-07 18:34:25
  • Android快速实现发送邮件实例

    2022-06-10 03:39:48
  • Spring Cache手动清理Redis缓存

    2023-11-29 02:49:52
  • Java集合ArrayDeque类实例分析

    2022-06-19 18:25:06
  • spring cloud 阿波罗 apollo 本地开发环境搭建过程

    2023-01-25 21:04:50
  • Java多线程 Guarded Suspension设计模式

    2023-03-12 01:52:00
  • C#中的委托、事件学习笔记

    2023-01-21 18:03:49
  • Java Timezone类常见问题_动力节点Java学院整理

    2023-08-23 01:30:11
  • asp之家 软件编程 m.aspxhome.com