本文實例為大家介紹了幾個可用的類,供大家參考,具體內容如下
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 167using
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 58using
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 19public
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類(可生成自己的控件)
? 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 241using
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(
"哈哈"
);
}
以上就是本文的全部內容,希望對大家的學習有所幫助。