一切皆有可能
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

利用TreeView生成数据库结构

Posted on 2007-06-02 10:07  张生工作室  阅读(278)  评论(0)    收藏  举报

 


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using Test;

public partial class Default2 : System.Web.UI.Page
{
     
protected void Page_Load(object sender, EventArgs e)
     {
         
if (!this.Page.IsPostBack)
         {
             
this.dbind();
         }
     }
     
public void dbind()
     { 
         
string sql="";
       OleDbConnection   con 
= new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\04mm.mdb");
         OleDbCommand cmd;
         OleDbDataAdapter apt;
         DataSet ds 
= new DataSet();
         TreeNode root 
= new TreeNode();
         root.Text 
= "数据库";
         
this.TreeView1.Nodes.Add(root);
         
string[] name =GetShemaTable("c:\\04mm.mdb");
        TreeNode paraent 
= new TreeNode();
         TreeNode child 
= new TreeNode();
         TreeNode cchild 
= new TreeNode();
         GridView gv 
= new GridView();
         
for (int i = 0; i < name.Length; i++)
         {

             ds 
= new DataSet();
             gv 
= new GridView();
             paraent.Text 
= name[i].ToString();
             paraent.Collapse();
             root.ChildNodes.Add(paraent);
             sql 
= "select * from " + name[i].ToString();
             cmd 
= new OleDbCommand(sql, con);
             apt 
= new OleDbDataAdapter(cmd);
             apt.Fill(ds,
"temp");

             gv.DataSource 
= ds;
             gv.DataBind();
            
// this.Panel1.Controls.Add(gv);
             for (int k = 0; k < ds.Tables["temp"].Columns.Count; k++)
             {

                 child.Text 
= ds.Tables["temp"].Columns[k].ColumnName.ToString();
                 paraent.ChildNodes.Add(child);
                
                 
//for (int j = 0; j < ds.Tables["temp"].Rows.Count; j++)
                 
//{
                    
                 
//     cchild.Text = gv.Rows[j].Cells[k].Text.ToString();
                 
//     child.ChildNodes.Add(cchild);
                 
//     cchild = new TreeNode();
                 
//}
                 child = new TreeNode();
             }
               
                 paraent 
= new TreeNode();
                 paraent.Collapse();
                 gv.Dispose();
                 ds.Dispose();


         }

 

     }
     
public static string[] GetShemaTable(string strDbPath)
     {
         
//创建OleDb数据库连接
         OleDbConnection pOleConn;

         
//设置数据连接
         pOleConn = new OleDbConnection();
         pOleConn.ConnectionString 
= @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strDbPath;
         pOleConn.Open();

         
try
         {
             
//获取数据表
             DataTable shemaTable = pOleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { nullnullnull"TABLE" });
            
             
int n = shemaTable.Rows.Count;
             
string[] strTable = new string[n];
             
int m = shemaTable.Columns.IndexOf("TABLE_NAME");

             
for (int i = 0; i < n; i++)
             {
                 DataRow m_DataRow 
= shemaTable.Rows[i];
                 strTable[i] 
= m_DataRow.ItemArray.GetValue(m).ToString();
             }

             
return strTable;
         }
         
catch (OleDbException ex)
         {
             Console.WriteLine(
"指定的限制集无效!");
             Console.WriteLine(ex.Message);
             
return null;
         }
         
finally
         {
             pOleConn.Close();
             pOleConn.Dispose();
         }
     }

}