📄 caccessdatabase.cs
字号:
using System;
//引入系统库
using System.Data;
//引入数据库对象库
using System.Data.OleDb;
//引入ado对象库
using System.Collections;
//引入集合对象库
using System.Windows.Forms;
//引入窗体对象
namespace databrowser
{
/// <summary>
/// CAccessDatabase 的摘要说明。
/// </summary>
public class CAccessDatabase
{
public CAccessDatabase()
{
//构造函数
//显示类创建信息
MessageBox.Show("创建了新的Access类"
,"创建新的类",MessageBoxButtons.OK);
}
public CAccessDatabase(String strConnect)
{
//重载构造函数
//取得链接变量
m_strConnect = strConnect;
}
//定义数据链接变量
private String m_strConnect;
//链接变量
private OleDbConnection myConnection =null;
//ado链接对象
private String mySQL=null;
//sql查询字符串
private Boolean myConnectFlag=false;
//链接标志
public String connectString
{
//链接属性
get
{
//取得链接字符串
return m_strConnect;
}
set
{
//设置链接字符串
m_strConnect = value;
}
}
private bool GrantReadAccessToSysObjects()
{
//定义数据库管理对象读取函数
bool success =false;
//定义标志变量
try
{
//查询变量
String SQL= "GRANT SELECT ON TABLE MSysObjects TO Admin";
//建立命令
OleDbCommand myCommand= new OleDbCommand(SQL, myConnection);
//执行查询
myCommand.ExecuteNonQuery();
//读取成功
success = true;
}
catch(OleDbException e)
{
Console.WriteLine(e.Message);
//反馈异常信息
}
return success;
//返回标志
}
public bool Connect()
{
//定义一个链接函数
try
{
//建立新的链接
myConnection = new OleDbConnection(m_strConnect);
//打开链接
myConnection.Open();
myConnectFlag = GrantReadAccessToSysObjects();
//读取系统数据库管理对象
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
//反馈异常信息
}
//返回链接标志
return myConnectFlag;
}
public bool GetTables(ref OleDbDataReader myDataReader)
{
//读取表单
OleDbDataReader mylocalDataReader=null;
//定义数据读取变量
bool mySuccessFlag=false;
//标志变量
try
{
if(myConnectFlag)
{
//如果链接成功
//建立查询
mySQL = "SELECT [Name] FROM MSysObjects "
+"WHERE Type=1 And Left([Name],1)<>'~' "
+"And Left([Name],4) <> 'MSys' Order By [Name]";
//建立命令
OleDbCommand myCommand =
new OleDbCommand(mySQL, myConnection);
//执行查询
mylocalDataReader = myCommand.ExecuteReader();
//执行查询
mySuccessFlag = true;
//查询成功
}
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
//反馈异常
}
//取得数据读取对象
myDataReader = mylocalDataReader;
//返回标志
return mySuccessFlag;
}
public bool myDatabaseTables(ref DataSet myTableDataSet)
{
//定义DataSet变量
DataSet myLocalTableDataSet=new DataSet();
//定义标志变量
bool mySuccessFlag=false;
try
{
if(myConnectFlag)
{
//如果链接成功
OleDbDataReader myDataReader=null;
//定义数据读取对象
bool successFlag=false;
//定义操作标志
successFlag = GetTables(ref myDataReader);
//读取表单
if(successFlag)
{
//如果成功的读取表单
ArrayList myArrayList=new ArrayList();
//定义列表对象
while(myDataReader.Read())
{
//用列表对象读取所以表单的信息
String myTableName ="";
myTableName =myDataReader.GetValue(0).ToString();
myArrayList.Add(myTableName);
}
myDataReader.Close();
//关闭读取对象
int iArrayCount= myArrayList.Count;
//取得表单数量
String [] myTableArray=new String[iArrayCount];
//定义数组来存放表单名称
myArrayList.CopyTo(myTableArray);
//取得表单名称
int i;
for(i=0;i<iArrayCount ;i++)
{
String tblName ;
tblName = myTableArray[i];
//取得表单名称
mySQL = "SELECT * FROM [" + tblName
+ "] ";
//建立查询
OleDbCommand myCommand=
new OleDbCommand(mySQL, myConnection);
//建立oledb命令
OleDbDataAdapter myDataSetCommand=
new OleDbDataAdapter(myCommand);
//建立oledbdataset命令
myDataSetCommand.Fill(myLocalTableDataSet,tblName);
//取得表单集合
}//for
}//If
myTableDataSet = myLocalTableDataSet;
//取得表单集合
mySuccessFlag =true;
//操作成功
}//if
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
//反馈异常
}
myTableDataSet = myLocalTableDataSet;
//取得表单集合
return mySuccessFlag;
//返回标志
}
public bool GetForms(ref OleDbDataReader myDataReader)
{
//取得窗体函数
OleDbDataReader mylocalDataReader =null;
//定义读取者对象
bool mySuccessFlag=false;
//建立标志
try
{
if(myConnectFlag)
{
//如果链接成功
mySQL = "SELECT [Name] FROM MSysObjects"
+" WHERE Type=-32768 And Left([Name],1)"
+"<>'~' Order By [Name]";
//建立查询
OleDbCommand myCommand=
new OleDbCommand(mySQL, myConnection);
//建立命令
mylocalDataReader = myCommand.ExecuteReader();
//执行命令
mySuccessFlag = true;
//设置标志
}
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
//反馈异常
}
myDataReader = mylocalDataReader;
//取得数据
return mySuccessFlag;
//反回标志
}
public bool GetMacros(ref OleDbDataReader myDataReader)
{
//取得宏函数
OleDbDataReader mylocalDataReader =null;
//建立读取对象
bool mySuccessFlag=false;
//建立标志
try
{
if(myConnectFlag)
{
//如果链接成功
mySQL = "SELECT [Name] FROM MSysObjects WHERE "
+"Type=-32766 And Left([Name],1)<>'~' Order By [Name]";
//定义查询
OleDbCommand myCommand=
new OleDbCommand(mySQL, myConnection);
//定义命令
mylocalDataReader = myCommand.ExecuteReader();
//执行命令
mySuccessFlag = true;
//设置标志
}
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
//反馈异常
}
myDataReader = mylocalDataReader;
//取得数据
return mySuccessFlag;
//反回标志
}
public bool GetModules(ref OleDbDataReader myDataReader)
{
//取得模块
OleDbDataReader mylocalDataReader =null;
//定义读取折对象
bool mySuccessFlag=false;
//建立标志
try
{
if(myConnectFlag)
{
//如果链接成功
mySQL = "SELECT [Name] FROM MSysObjects"
+" WHERE Type=-32761 And Left([Name],1)"
+"<>'~' Order By [Name]";
//建立查询
OleDbCommand myCommand =
new OleDbCommand(mySQL, myConnection);
//建立命令
mylocalDataReader = myCommand.ExecuteReader();
//执行命令
mySuccessFlag =true;
//设置标志
}
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
//反馈异常
}
myDataReader = mylocalDataReader;
//取得数据读取结果
return mySuccessFlag;
//返回标志
}
public bool GetQueries(ref OleDbDataReader myDataReader)
{
//取得查询函数
OleDbDataReader mylocalDataReader=null;
//建立数据读取者
bool mySuccessFlag=false;
//建立标志
try
{
if(myConnectFlag)
{
//如果链接成功
mySQL = "SELECT [Name] FROM MSysObjects "
+"WHERE Type=5 And Left([Name],1)<>'~' "
+"And Mid([Name], Len([Name]) - 3) <> '0000' "
+"Order By [Name]";
//建立查询
OleDbCommand myCommand=
new OleDbCommand(mySQL, myConnection);
//建立oledb命令
mylocalDataReader = myCommand.ExecuteReader();
//执行命令
mySuccessFlag = true;
//操作成功
}
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
//反馈异常信息
}
myDataReader = mylocalDataReader;
//取得读取得查询
return mySuccessFlag;
//返回标志
}
public bool GetReports(ref OleDbDataReader myDataReader)
{
//读取报表函数
OleDbDataReader mylocalDataReader=null;
//建立数据读取对象
bool mySuccessFlag=false;
//建立标志
try
{
if(myConnectFlag)
{
//如果链接成功
mySQL = "SELECT [Name] FROM MSysObjects "
+"WHERE Type=-32764 And Left([Name],1)<>'~' "
+"Order By [Name]";
//建立查询
OleDbCommand myCommand=
new OleDbCommand(mySQL, myConnection);
//建立命令
mylocalDataReader = myCommand.ExecuteReader();
//执行命令
mySuccessFlag = true;
//设置标志
}
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
//反馈异常
}
myDataReader = mylocalDataReader;
//取得数据
return mySuccessFlag;
//返回标志
}
public bool ExecuteSQL(String mySQL,ref DataSet
myDataSet,ref String mySQLError)
{
//执行查询函数
DataSet mylocalDataSet=new DataSet();
//建立表单集合对象
String mylocalError=null;
//建立错误字符串
bool mySuccessFlag=false;
//建立操作标志
try
{
if(myConnectFlag)
{
//如果链接成功
OleDbCommand myCommand=
new OleDbCommand(mySQL, myConnection);
//建立命令
OleDbDataAdapter myDataSetCommand=
new OleDbDataAdapter(myCommand);
//建立数据集合命令
myDataSetCommand.Fill(mylocalDataSet, "temp");
//填充数据集合
mySuccessFlag =true;
//设置标志
}
else
{
mylocalError = "[Connection Failed]: "
+"Invalid Connection parameters.";
//设置自己的错误字符串
}
}
catch(OleDbException e)
{
foreach(OleDbError myError in e.Errors)
{
//反馈回所以错误信息
mylocalError += "[Error Source]: "
+ myError.Source + "[Error Message]: "
+ myError.Message;
}
}
finally
{
mySQLError = mylocalError;
//取得错误信息
myDataSet = mylocalDataSet;
//取得数据表单集合
}
return mySuccessFlag;
//反回操作标志
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -