📄 accessexplorer.cs
字号:
using System;
using System.Drawing;
using System.Collections;
//插入集合库
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
//插入数据库处理库
using System.Data.OleDb;
//插入OleDb处理库
namespace databrowser
{
/// <summary>
/// AccessExplorer 的摘要说明。
/// </summary>
public class AccessExplorer : System.Windows.Forms.Form
{
private System.Windows.Forms.TreeView treeView1;
private System.Windows.Forms.ContextMenu contextMenu1;
private System.Windows.Forms.ListView listView1;
private System.ComponentModel.IContainer components;
public AccessExplorer()
{
InitializeComponent();
}
public AccessExplorer(ref String userName,ref String password
,ref String database,ref String SQLServer)
{
//重载构造函数
InitializeComponent();
//初始化组件
//以下取得数据库链接变量
m_userName = userName;
m_password = password;
m_database = database;
m_SQLServer = SQLServer;
}
//以下定义了数据库链接变量
private String m_userName;
//存放用户名称
private String m_password;
//存放密码
private String m_database;
//存放数据库地址
private String m_SQLServer;
//存放SQLServer链接信息
private String m_sConnectString;
//存放链接
private DataSet myTableData=new DataSet();
//存放表单集合
private DataSet myViewsData=new DataSet();
//存放表单属性集合
private DataSet myStoredProcData =new DataSet();
//存放存储过程
public String ConnectionString
{
//定义只读链接属性
get
{
return m_sConnectString;
//取得链接字符串
}
set
{
m_sConnectString=value;
}
}
public bool buildTreeView()
{
//建立树查看对象
bool connectedFlag=false;
//建立链接标志
CAccessDatabase database=new CAccessDatabase();
//建立一个自己定义的Access数据库类
String connString="Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + m_database + ";" +
"Jet OLEDB:System database=" + m_SQLServer
+ ";User ID =" + m_userName + ";Password =" + m_password + ";";
//建立一个数据库链接字符串
m_sConnectString = connString;
//取得链接字符串的值
database.connectString = connString;
//赋值给数据库对象
connectedFlag = database.Connect();
//进行链接
if(connectedFlag)
{
//如果链接成功
TreeNode myRootNode=new TreeNode(this.m_database);
//建立树的根节点为数据库对象
bool successFlag=false;
//建立标志
successFlag = database.myDatabaseTables(ref myTableData);
//取得表单集合
if(successFlag)
{
//成功的取得了表单
ArrayList myArrayList=new ArrayList();
//建立列表对象
foreach(DataTable myTable in myTableData.Tables)
{
//对每一个表单进行操作
TreeNode myTableName=new TreeNode();
//定义节点变量
myTableName.Text = myTable.TableName.ToString();
//取得表单名称
myArrayList.Add(myTableName);
//列表自己节点
}//foreach
int iArrayCount= myArrayList.Count;
//取得节点数目
TreeNode [] myTables=new TreeNode[iArrayCount];
//定义一个节点数组
myArrayList.CopyTo(myTables);
//用节点数组取得表单名称
TreeNode myTableNameNode=new TreeNode("Tables", myTables);
//建立一个名称为"Tables"的节点
myRootNode.Nodes.Add(myTableNameNode);
//增加表单到节点到根结点
}//if
OleDbDataReader myDataReader=null;
//建立数据库读取对象
successFlag = database.GetQueries(ref myDataReader);
//取得查询
if(successFlag)
{
//如果成功的取得了查询
ArrayList myArrayList= new ArrayList();
//建立列表对象
while(myDataReader.Read())
{
//读取所有查询
TreeNode myTableName=new TreeNode();
//建立一个查询节点
myTableName.Text =
myDataReader.GetValue(0).ToString();
//取得查询的名称
myArrayList.Add(myTableName);
//在列表中增加查询名称
}//while
myDataReader.Close();
//关闭数据读取对象
int iArrayCount=myArrayList.Count;
//取得查询数量
TreeNode [] myTables= new TreeNode[iArrayCount];
//建立节点集合
myArrayList.CopyTo(myTables);
//取得查询名称
TreeNode myTableNameNode= new TreeNode("Queries", myTables);
//建立一个查询节点
myRootNode.Nodes.Add(myTableNameNode);
//增加查询节点到根节点
}//if
successFlag = database.GetForms(ref myDataReader);
//取得窗体
if(successFlag)
{
//如果成功的取得了窗体
ArrayList myArrayList=new ArrayList();
//定义列表对象
while(myDataReader.Read())
{
//读取所有窗体
TreeNode myTableName= new TreeNode();
//建立节点
myTableName.Text = myDataReader.GetValue(0).ToString();
//取得窗体的名称
myArrayList.Add(myTableName);
//将窗体的名称增加到列表里面
}//while
myDataReader.Close();
//关闭数据读取对象
int iArrayCount= myArrayList.Count;
//取得窗体数目
TreeNode [] myTables=new TreeNode[iArrayCount];
//建立节点集合
myArrayList.CopyTo(myTables);
//拷贝列表内容到节点集合
TreeNode myTableNameNode=new TreeNode("Forms", myTables);
//建立form节点
myRootNode.Nodes.Add(myTableNameNode);
//将form节点增加到根节点
}//if
successFlag = database.GetReports(ref myDataReader);
//读取报表
if(successFlag)
{
//读取成功
ArrayList myArrayList=new ArrayList();
//建立列表对象
while(myDataReader.Read())
{
//读取所有报表
TreeNode myTableName=new TreeNode();
//建立新节点
myTableName.Text = myDataReader.GetValue(0).ToString();
//取得报表名称
myArrayList.Add(myTableName);
//将报表名称增加到列表里
}
myDataReader.Close();
//关闭数据库读取对象
int iArrayCount=myArrayList.Count;
//取得报表数量
TreeNode [] myTables=new TreeNode[iArrayCount];
//定义节点数组
myArrayList.CopyTo(myTables);
//将列表中的报表名称拷贝到节点数组
TreeNode myTableNameNode=
new TreeNode("Reports", myTables);
//建立报表节点
myRootNode.Nodes.Add(myTableNameNode);
//将报表节点增加到根节点
}//if
successFlag = database.GetMacros(ref myDataReader);
//读取宏
if(successFlag)
{
//如果读取成功
ArrayList myArrayList =new ArrayList();
//建立列表对象
while(myDataReader.Read())
{
//读取所有宏
TreeNode myTableName=new TreeNode();
//建立新节点
myTableName.Text = myDataReader.GetValue(0).ToString();
//取得宏的名称
myArrayList.Add(myTableName);
//将宏的名称增加到列表对象
}
myDataReader.Close();
//关闭数据读取对象
int iArrayCount=myArrayList.Count;
//取得宏的数量
TreeNode [] myTables=new TreeNode[iArrayCount];
//建立节点数组
myArrayList.CopyTo(myTables);
//拷贝宏名称道节点数组
TreeNode myTableNameNode =new TreeNode("Macros", myTables);
//建立宏节点
myRootNode.Nodes.Add(myTableNameNode);
//将宏节点增加到根结点
}
successFlag = database.GetModules(ref myDataReader);
//取得模块
if(successFlag)
{
//如果取得成功
ArrayList myArrayList =new ArrayList();
//建立列表对象
while(myDataReader.Read())
{
//读取所有模块
TreeNode myTableName=new TreeNode();
//建立新节点
myTableName.Text = myDataReader.GetValue(0).ToString();
//取得模块名称
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -