几个可用的类的分享

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

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("哈哈");
        }
时间: 2024-10-29 00:47:23

几个可用的类的分享的相关文章

php ZIP压缩类实例分享

php ZIP压缩类实例分享 ? 1 2 3 4 5 6 <?php $zipfiles =array("/root/pooy/test1.txt","/root/pooy/test2.txt"); $z = new PHPZip(); //$randomstr = random(8); $zipfile = TEMP."/photocome_".$groupid.".zip"; $z->Zip($zipfiles

一个实用的C#网页抓取类代码分享

一个实用的C# 网页抓取类 模拟蜘蛛,类中定义了超多的C#采集文章.网页抓取文章的基础技巧,下面分享代码: using System; using System.Data; using System.Configuration; using System.Net; using System.IO; using System.Text; using System.Collections.Generic; using System.Text.RegularExpressions; using Sys

做自媒体需要什么工具?牛蚁写作总结6类工具分享给大家!

现在的自媒体运营从业人员除了做微信公众号运营以外,还包括了头条.知乎.百家号.小红书.微博.抖音等自媒体平台的运营.那么同时运营这么多的平台如果没有合适的自媒体工具来辅助自己做运营,那么工作的效率是非常非常低的.今天牛蚁写作就跟大家分享6类硬核的工具.1.排版工具创作文章都会用到图片排版工具.排版工具可以让我们的文章排版更加简洁清晰.市面上比较常见的有135.秀米等排版工具.2.视频制作工具如果你是做视频自媒体的话,那就需要用视频制作和剪辑工具,像手机拍摄需要用到的无他相机.美拍等.剪辑工具包括

PHP编写的图片验证码类文件分享方法

适用于自定义的验证码类! <?php /* * To change this license header, choose License Headers in Project Properties.* To change this template file, choose Tools | Templates* and open the template in the editor.*/Class Image{ private $img;public $width = 85;public $h

Android新闻类界面分享(多种布局的listview)

最近项目里需要一个新闻资讯的界面,就自己试着做了一下,还是非常简单的.实现是重写BaseAdapter,创建自己的adapter,以及popupwindow效果. 效果图: 下面是新闻主界面,所有的新闻条目都显示在这个页面中 Titlebar右边有一个按钮,可以选择具体门类的新闻. 点开某一条新闻直接根据url打开一个webview(这里我偷懒了,大家可以自己完善) adapter的编写 从上面效果图可以看到,一个listview中包含了3种不同的样式. 没有图片的新闻 有一张大图片的新闻 有一

亲测可用的发送邮件方法分享

//发送邮件代码 public static void Sends(string email, string formto, string content, string body, string upass) { string name = "[email protected]"; string smtp = "smtp.exmail.sina.com"; SmtpClient _smtpClient = new SmtpClient(); _smtpClient

记录一个图片处理类,分享给大家参考

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Text; using System.IO; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; namespace Common { /// <summary> /// 图片处理 //

我写的javascript常用静态方法类,分享给大家

util=function(){    return {        $:function(id){            return document.getElementById(id);        },        trim:function(str){            return str.replace(/(^\s+)|(\s+$)/g, "");        },        len:function(str){               return

一个可用的AccessHelper类

前些日子做项目用了下Access数据库,看了很多AccessHelper,感觉这个虽然不是最好的,却是可用的. 故此分享一下,以后看到更好的还会继续分享. using System; using System.Data; using System.Configuration; using System.Data.OleDb; using System.Collections; namespace DAL { /// <summary> /// AcceHelper 的摘要说明 /// <