数据访问层设计 Disk.cs

类Disk实现,它继承于接口IDisk,并实现了接口的所有方法。
类除了实现接口的所有方法之外,还定义了方法ShowDirectory(DropDownList dirList,int nParentID)和方法CreateChildNode(DropDownList dirList,DataTable

dataTable,int nParentID,string sParentName)。这两个方法实现按目录层次结果显示目录的信息。
  实现上述功能的具体步骤如下:
(1)从数据库中获取所有目录信息,并使用DataTable对象dataTable保存获取的结果。
(2)添加根目录信息到控制dirList中。
(3)调用方法CreateChildNode(DropDownList dirList,DataTable dataTable,int nParentID,string sParentName)添加目录ID值为nParentID的所有子目录信息到控件dirList中


(4)重复步骤(3),直到所有目录都被添加到控件dirList中。

其中,步骤(1)~(3)由方法ShowDirectory(DropDownList dirList,int nParentID)实现。步骤(4)由方法CreateChildNode(DropDownList dirList,DataTable dataTable,int

nParentID,string sParentName)实现。

public void ShowDirectory(DropDownList dirList,int nParentID)
{
  DataTable dataTable=SystemTools.ConvertDataReaderToDataTable(GetDirectorys());
  dirList.Items.Clear();  //清空所有节点
  DataRow[] rowList=dataTable.Select("ParentID='-1'");
  if(rowList.Lenth<=0) return;
  //创建.添加根节点
  dirList.Items.Add(new ListItem("/",rowList[0]["DirID"].ToString()));
  //创建其他节点
  CreateChildNode(dirList,dataTable,Int32.Parse(rowList[0]["DirID"].ToString()),"/");


}

private void CreateChildNode(DropDownList dirList,DataTable dataTable,int nParentID,string sParentName)
{//选择数据时,添加了排序表达式OrderBy
 DataRow[] rowList=dataTable.Select("ParentID='"+nParentID.ToString()+"'","CreateDate DESC");
 foreach(DataRow row in rowList)
  {
   string sName=sParentName+row["Name"].ToString()+"/";
   //创建新节点
   dirList.Items.Add(new ListItem(sName,row["DirID"].ToString()));
   //递归调用,创建其他节点
   CreateChildNode(dirList,dataTable,Int32.Parse(row["DirID"].ToString()),sName);
  }
}

由于接口的方法比较多,在此仅介绍添加文件的方法AddFile(string sName,int nParentID,int nContain,string sUrl,string sType)。该方法使用存储过程Pr_AddFile添加新

的文件到数据库中。该存储过程需要参数Name,ParentID,Contain,Url和Type,分别表示文件的名称,父目录ID,大小,链接地址和类型。
AddFile(string sName,int nParentID,int nContain,string sUrl,string sType)
{
  SqlConnection myConnection =new SqlConnection(ConfigurationManager.ConnectionStrings

["SQLCONNECTIONSTRING"].ConnectionString);
  SqlCommand myCommand=new SqlCommand("Pr_AddFile",myConnection);
  myCommand.CommandType=CommandType.StoredProcedure;
  SqlParameter pName=new SqlParameter("@Name",SqlDbType.VarChar,200);
  pName.Value=sName;
  myCommand.Parameters.Add(pName);
  SqlParameter pParentID=new SqlParameter("@ParentID",SqlDbType.Int,4);
  pParentID.Value=nParentID;
  myCommand.Parameters.Add(pParentID);
  SqlParameter pContain=new SqlParameter("@Contain",SqlDbType.Int,4);
  pContain.Value=nContain;
  myCommand.Parameters.Add(pContain);
  SqlParameter pUrl=new SqlParameter("@Url",SqlDbType.VarChar,255);
  pUrl.Value=sUrl;
  myCommand.Parameters.Add(pUrl);
  SqlParameter pType=new SqlParameter("@Type",SqlDbType.VarChar,200);
  pType.Value=sType;
  myCommand.Parameters.Add(pType);
//定义返回值
 int nResult=-1;
 try
  {
    myConnection.Open();
    nResult=myCommand.ExecuteNonQuery();
  }
 catch(SqlException ex)
  {
    throw new Exception(ex.Message,ex);
  }
 finally
 {
  myConnection.Close();
 }
 return nResult;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值