本文实例为大家介绍了几个可用的类,供大家参考,具体内容如下
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;
///
/// 执行NonQuery命令
///
///
///
///
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;
}
}
///
/// ExecuteScalar
///
/// 第一个参数,SQLServer语句
/// 第二个参数,传递0个或者多个参数
///
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
{
///
/// DataSetToList
///
/// 转换类型
/// 数据源
/// 需要转换表的索引
///
public List DataTableToList(DataTable dt)
{
//确认参数有效
if (dt == null )
return null;
List list = new List();
for (int i = 0; i < dt.Rows.Count; i++)
{
//创建泛型对象
T _t = Activator.CreateInstance();
//获取对象所有属性
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 ListLoadcombox2() { 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 (dt); return list; }
3.DGMsgDiv类(可生成自己的控件)
using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; ////// 消息条回调函数委托 /// public delegate void DGMsgDiv(); ////// 消息条类 带Timer计时 /// public class MsgDiv : System.Windows.Forms.Label { private Timer timerLable = new Timer(); ////// 消息回调 委托对象 /// private DGMsgDiv dgCallBack = null; #region 计时器 ////// 计时器 /// public Timer TimerMsg { get { return timerLable; } set { timerLable = value; } } #endregion #region MsgDiv构造函数 ////// MsgDiv构造函数 /// public MsgDiv() { InitallMsgDiv(7, 7); } ////// MsgDiv构造函数 /// /// 定位x轴坐标 /// 定位y轴坐标 public MsgDiv(int x, int y) { InitallMsgDiv(x, y); } #endregion #region 初始化消息条 ////// 初始化消息条 /// 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 将消息条添加到指定容器上 ////// 将消息条添加到指定容器上Form /// /// public void AddToControl(Form form) { form.Controls.Add(this); } ////// 将消息条添加到指定容器上GroupBox /// /// public void AddToControl(GroupBox groupBox) { groupBox.Controls.Add(this); } ////// 将消息条添加到指定容器上Panel /// /// public void AddToControl(Panel panel) { panel.Controls.Add(this); } #endregion //--------------------------------------------------------------------------- #region 消息显示 的相关参数们 hiddenClick,countNumber,constCountNumber ////// 当前显示了多久的秒钟数 /// int hiddenClick = 0; ////// 要显示多久的秒钟数 可变参数 /// int countNumber = 3; ////// 要显示多久的秒钟数 固定参数 /// 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() ////// 隐藏消息框 并停止计时 /// 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) ////// 在消息框中显示消息字符串 /// /// 要显示的字符串 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) ////// 在消息框中显示消息字符串 并在消息消失时 调用回调函数 /// /// 要显示的字符串 /// 回调函数 public void MsgDivShow(string msg, DGMsgDiv callback) { MsgDivShow(msg); dgCallBack = callback; } #endregion #region 在消息框中显示消息字符串 并在指定时间消息消失时 调用回调函数 +void MsgDivShow(string msg, int seconds, DGMsgDiv callback) ////// 在消息框中显示消息字符串 并在消息消失时 调用回调函数 /// /// 要显示的字符串 /// 消息显示时间 /// 回调函数 public void MsgDivShow(string msg, int seconds, DGMsgDiv callback) { MsgDivShow(msg, seconds); dgCallBack = callback; } #endregion #region 在消息框中显示消息字符串,并指定消息框显示秒数 +void MsgDivShow(string msg, int seconds) ////// 在消息框中显示消息字符串,并指定消息框显示秒数 /// /// 要显示的字符串 /// 消息框显示秒数 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("哈哈");
}
以上就是本文的全部内容,希望对大家的学习有所帮助。



