using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Text;
using System.Security.Cryptography;
using System.Drawing;
using System.Collections;
using System.Web.SessionState;
using System.Web.UI.HtmlControls;
namespace PublicFunction
{
public class Public : System.Web.UI.WebControls.WebControl
{
///下面是打開數據庫和關閉數據庫的公用函數
private static string ConnectionString = ConfigurationSettings.AppSettings["sqlconn"];
public static SqlConnection SqlConn =new SqlConnection(ConnectionString);
public static void SqlOpenDataBase()
{
if(SqlConn.State==ConnectionState.Open)
SqlConn.Close();
SqlConn.Open();
}
public static void SqlCloseDataBase()
{
SqlConn.Close();
}
///如果有驗證所需的密碼,而且在其它數據聯接中,請打開下面幾行
private static string PassConnectionString = ConfigurationSettings.AppSettings["passconn"];
public static SqlConnection PassConn =new SqlConnection(PassConnectionString);
public static void PassOpenDataBase()
{
if(PassConn.State==ConnectionState.Open)
PassConn.Close();
PassConn.Open();
}
public static void PassCloseDataBase()
{
PassConn.Close();
}
/* 1、編寫: 2004-8-25
* 2、功能:讓控件得到焦點
* 3、參數:System.Web.UI.Control control 任意已實例化的控件
* 4、返回值: 無
* 5、用途:使傳入該方法的控件得到焦點
*/
public static bool SetFocus(System.Web.UI.Control control)
{
if (HttpContext.Current.Request.Browser.JavaScript)
{
control.Page.RegisterStartupScript("sf","<script language='javascript'>document.forms[0]." +
control.ClientID +".focus();</script>");
return true;
}
return false;
}
///用於轉換爲MD5加密字符串的函數
public static string HashCryptString(string strText,string method)
{
if(method == "MD5")
{
strText = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strText,"MD5");
}
else if(method == "SHA1")
{
strText = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strText,"SHA1");
}
else if(method=="BLOG")//這個加密方式取自於.TextBlog的加密函數
{
strText = strText.ToLower();
Byte[] clearBytes = new UnicodeEncoding().GetBytes(strText);
Byte[] hashedBytes = ((HashAlgorithm) CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);
return BitConverter.ToString(hashedBytes);
}
return strText;
}
///
/// 輸出指定的信息
///
///
///一般引用時MessageBox(this,"我來也!");
public static void MessageBox( Page page, string msg )
{
StringBuilder StrScript = new StringBuilder();
StrScript.Append( "<script language=javascript>" );
StrScript.Append( "alert('"+ msg +"');" );
StrScript.Append( "</script>" );
if ( ! page.IsStartupScriptRegistered( "MessageBox" ) )
{
page.RegisterStartupScript( "MessageBox", StrScript.ToString() );
}
}
///
/// 取得隨機數
///
/// 隨機數的長度
///
public static string GetRandNum( int randNumLength )
{
System.Random randNum = new System.Random( unchecked( ( int ) DateTime.Now.Ticks ) );
StringBuilder sb = new StringBuilder( randNumLength );
for ( int i = 0; i < randNumLength; i++ )
{
sb.Append( randNum.Next( 0, 9 ) );
}
return sb.ToString();
}
/// 下面用於記錄cookie的使用
///
public static void SaveCookie(string CookieName,string CookieValue,double ExpiresTime)
{
HttpCookie objCookie;
HttpCookieCollection objCookieColl = HttpContext.Current.Response.Cookies;
for (int i=0;i<objCookieColl.Count-1;i++)
{
objCookie = objCookieColl[i];
if (objCookie.Name == CookieName)
{
HttpContext.Current.Response.Cookies.Remove(CookieName);
}
}
objCookie = null;
objCookieColl=null;
// Cookie有效期。
HttpCookie myCookie = new HttpCookie(CookieName,CookieValue);
myCookie.Expires = System.DateTime.Now.AddMinutes(ExpiresTime);
HttpContext.Current.Response.Cookies.Add(myCookie);
}
///使用方法:
///1:記錄
///SaveCookie([Cookie名字],[Cookie內容],[失效時間]);
///2:獲得cookie:
///string bbb=Server.HtmlEncode(Request.Cookies["NewCookie"].Value);
///Response.Write(bbb);
///
///真的要刪除嗎?
public static void RealToDel(Button myButton)
{
myButton.Attributes.Add("onclick","return confirm('您確定要刪除嗎?');");
}
///用存儲過程執行命令:
///一、無返回值時
/*
SqlCommand myCommand=new SqlCommand("存儲過程名", Public.SqlConn);;
myCommand.CommandType=CommandType.StoredProcedure;
myCommand.Parameters.Add(new SqlParameter("@UserName",SqlDbType.VarChar,50));
myCommand.Parameters["@UserName"].Value=Session["UserName"].ToString();
Public.OpenDataBase();
myCommand.ExecuteNonQuery();
Public.CloseDataBase();
*/
///二、有返回值時:
/*
(1) 一般如果在存儲過程中沒有很多(>1)的返回值,可以直接用 select 返回
SqlCommand myCommand=new SqlCommand("存儲過程名", Public.PassWordConn);;
myCommand.CommandType=CommandType.StoredProcedure;
myCommand.Parameters.Add(new SqlParameter("@UserName",SqlDbType.VarChar,50));
myCommand.Parameters["@UserName"].Value=UserName.Text.Trim();
Public.OpenDataBasePassWord();
int Result=Int32.Parse(myCommand.ExecuteScalar().ToString());
Public.CloseDataBasePassWord();
(2)如果有多個需返回的值
定義SQL存儲過程時,如:
CREATE PROCEDURE CountProc
@Count int output
AS
set @Count=1
GO
則在使用時:
int output;
SqlCommand myComm = new SqlCommand("ProcedureName",Public.SqlConn);
myComm.CommandType = CommandType.StoredProcedure;
myComm.Parameters.Add( new SqlParameter("@Output",SqlDbType.Int,4) );
myComm.Parameters["@Output"].Direction = ParameterDirection.Output;
Public.OpenDataBase();
myComm.ExecuteNonQuery();
output = Convert.ToInt32( myComm.Parameters["@Output"].Value );
Public.CloseDataBase();
*/
///三、返回DataSet時
/*
*
SqlCommand MyCommand=new SqlCommand([存儲過程名],Public.SqlConn);
MyCmd.CommandType=CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(MyCommand);
DataSet ds = new DataSet("myTable");
da.Fill(ds, "myTable");
DataGrid1.DataSource=ds;
DataGrid1.DataBind();
Public.CloseDataBase();
*/
}
}