public class Counter : Microsoft.SharePoint.WebPartPages.WebPart
{
 //  private const string defaultText = "";
 //
 //  private string text = defaultText;

 const string strDBUser="";
 const string strDBUserPWD="";
 const string strDBHostName="";
 const string strDBName="";
 const int TimeDiff=0;
 const bool __IsOnLine =false;
 const bool __IsShowOnLine =false;


 private string _strDBUser;
 private string _strDBUserPWD;
 private string _strDBHostName;
 private string _strDBName;
 private int _TimeDiff;
 private bool _IsOnLine;
 private bool _IsShowOnLine;

 


 //  [Category("资料库连线帐号")]
 [Category("Custom Properties")]
 [DefaultValue(strDBUser)]
 [WebPartStorage(Storage.Shared)]
 [FriendlyNameAttribute("请设定资料库连线帐号")]
 [Description("请设定资料库连线帐号")]
 [Browsable(true)]
 [XmlElement(ElementName="strUser")]
 public string strUser{get{return _strDBUser;} set{_strDBUser = value;}}

  
 //[Category("资料库连线帐号之密码")]
 [Category("Custom Properties")]
 [DefaultValue(strDBUserPWD)]
 [WebPartStorage(Storage.Shared)]
 [FriendlyNameAttribute("请设定资料库连线帐号密码")]
 [Description("请设定资料库连线帐号密码")]
 [Browsable(true)]
 [XmlElement(ElementName="strUserPWD")]
 public string strUserPWD{get{return _strDBUserPWD;} set{_strDBUserPWD = value;}}

  
 //  [Category("资料库主机名称")]
 [Category("Custom Properties")]
 [DefaultValue(strDBHostName)]
 [WebPartStorage(Storage.Shared)]
 [FriendlyNameAttribute("请设定资料库主机名称")]
 [Description("请设定资料库主机名称")]
 [Browsable(true)]
 [XmlElement(ElementName="strDBHost")]
 public string strDBHost{get{return _strDBHostName;} set{_strDBHostName = value;}}

  
 //[Category("资料库名称")]
 [Category("Custom Properties")]
 [DefaultValue(strDBName)]
 [WebPartStorage(Storage.Shared)]
 [FriendlyNameAttribute("请设定资料库名称")]
 [Description("请设定资料库名称")]
 [Browsable(true)]
 [XmlElement(ElementName="strDataBaseName")]
 public string strDataBaseName{get{return _strDBName;} set{_strDBName = value;}}

  
 //  [Category("计算时间")]
 [Category("Custom Properties")]
 [DefaultValue(TimeDiff)]
 [WebPartStorage(Storage.Shared)]
 [FriendlyNameAttribute("请填入SessionTimeOut时间")]
 [Description("请填入SessionTimeOut时间")]
 [Browsable(true)]
 [XmlElement(ElementName="sTimeDiff")]
 public int sTimeDiff{get{return _TimeDiff;} set{_TimeDiff = value;}}

   
 //  [Category("")]
 [Category("Custom Properties")]
 [DefaultValue(__IsOnLine)]
 [WebPartStorage(Storage.Shared)]
 [FriendlyNameAttribute("是否显示线上人数")]
 [Description("是否显示线上人数")]
 [Browsable(true)]
 [XmlElement(ElementName="IsOnLine")]
 public bool IsOnLine{get{return _IsOnLine;} set{_IsOnLine = value;}}

 //  [Category("")]
 [Category("Custom Properties")]
 [DefaultValue(__IsShowOnLine)]
 [WebPartStorage(Storage.Shared)]
 [FriendlyNameAttribute("是否显示线上人名")]
 [Description("是否显示线上人名")]
 [Browsable(true)]
 [XmlElement(ElementName="IsShowOnLine")]
 public bool IsShowOnLine{get{return _IsShowOnLine;} set{_IsShowOnLine = value;}}
 public int GetLoginCount()
 {  
  int i;
  try
  {
   string strConn="packet size=4096;user id=" + strUser + ";password=" + strUserPWD + ";data source=" + strDBHost + ";persist security info=true;initial catalog=" + strDataBaseName ;
   SqlConnection myConnection =new SqlConnection(strConn);
   
   string strSQL= "exec GetLoginCount "  ;
   
   SqlDataAdapter da=new SqlDataAdapter(strSQL, myConnection);
   DataSet ds =new DataSet();
   da.Fill(ds);

   i =Convert.ToInt32(ds.Tables[0].Rows[0].ItemArray[0]);
    
   myConnection.Close();
  }
  catch(System.IndexOutOfRangeException ee)
  {
   i=0;
  }
  return i;
 }

 

 public int GetOnLineCount()
 {  
  int i;
  try
  {
   string strConn="packet size=4096;user id=" + strUser + ";password=" + strUserPWD + ";data source=" + strDBHost + ";persist security info=true;initial catalog=" + strDataBaseName ;
   SqlConnection myConnection =new SqlConnection(strConn);
    
   string strSQL= "exec GetOnLineCount " + sTimeDiff  ;
    
   SqlDataAdapter da=new SqlDataAdapter(strSQL, myConnection);
   DataSet ds =new DataSet();
   da.Fill(ds);

   i=ds.Tables[0].Rows.Count;
     
   myConnection.Close();
  }
  catch(System.IndexOutOfRangeException ee)
  {
   i=0;
  }
  return i;
 }

 public DataTable GetOnLine()
 {  
  DataTable dt;
  try
  {
   string strConn="packet size=4096;user id=" + strUser + ";password=" + strUserPWD + ";data source=" + strDBHost + ";persist security info=true;initial catalog=" + strDataBaseName ;
   SqlConnection myConnection =new SqlConnection(strConn);
    
   string strSQL= "exec GetOnLineCount " + sTimeDiff  ;
    
   SqlDataAdapter da=new SqlDataAdapter(strSQL, myConnection);
   DataSet ds =new DataSet();
   da.Fill(ds);
     
   dt =ds.Tables[0];
   myConnection.Close();
  }
  catch(System.IndexOutOfRangeException ee)
  {
   dt =null;
  }
  return dt;
 }

 private bool IsNum(string strValue)
 {
  try
  {
   int Num = int.Parse(strValue);
   return true;
  }
  catch(Exception Ex)
  {
   string Msg = Ex.Message;
   return false;
  }
 }

 public string chkConnection()
 {
  string strMsg="";
  try
  {
   string strConn="packet size=4096;user id=" + strUser + ";password=" + strUserPWD + ";data source=" + strDBHost + ";persist security info=true;initial catalog=" + strDataBaseName ;
   SqlConnection myConnection =new SqlConnection(strConn);
   string strSQL="select count(*) from LoginInfo";
   SqlCommand chkDBComm=new SqlCommand(strSQL,myConnection);

   myConnection.Open(); 
   chkDBComm.ExecuteNonQuery();
   myConnection.Close();

   strMsg= "ok";

   return strMsg;
  }
  catch(SqlException ee)
  {
   strMsg=ee.Message.ToString();
   return strMsg;
  }
 }


 protected override void RenderWebPart(HtmlTextWriter output)
 {
  try
  {
   if (chkConnection() =="ok")
   {
     
    int  i = GetLoginCount();
    string sUI="";
    sUI+="<table><tr><td size='2'>你是本站第 <FONT color='#ff0000'>" +   i.ToString() +  "</font> 位访客</td></tr></table>";
     
    if(IsOnLine)
    {
     if(IsNum(sTimeDiff.ToString()))
     {
      int k = GetOnLineCount();
      sUI+="<table><tr><td size='2'>目前站上共有 <FONT color='#ff0000'>" +   k.ToString() +  "</font> 位访客</td></tr></table>";
      if(IsShowOnLine)
      {
       DataTable dt = GetOnLine();
       if(dt.Rows.Count > 0)
       {
        for(int s=0;s < dt.Rows.Count ;s++)
        {
         sUI+="<font size='1'>" +  dt.Rows[s].ItemArray[0].ToString() + "</font> ";
        }
       }
      }
     }
     else
     {
      sUI+="<FONT color='#ff0000'>SessionTimeOut请输入整数</Font>";
     }
    }
    output.Write(sUI);
   }
   else
   {
    switch (chkConnection())
    {
     case "使用者 'sa' 的登入失败。":
      output.Write("资料库连线密码错误!");
      break;
     case "使用者 '(null)' 的登入失败。原因: 未结合受信任的 SQL Server 连线。":
      output.Write("资料库连线帐号错误!");
      break;
     case "SQL Server 不存在或拒绝存取。":
      output.Write("资料库主机名称错误或拒绝存取");
      break;
     case "无效的物件名称 'LoginInfo'。":
      output.Write("资料库名称错误");
      break;
     default:
      output.Write(chkConnection());
      break;
    }
   }

  }
  catch(Exception ee)
  {
   output.Write(ee.ToString());
  }
 }
}

posted on 2006-07-05 00:16  volitation  阅读(380)  评论(0)    收藏  举报