欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

分享C#中几个可用的类

程序员文章站 2023-11-18 21:56:28
本文实例为大家介绍了几个可用的类,供大家参考,具体内容如下 1.sqlhelper类 using system; using system.collectio...

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

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

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