⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 caccessdatabase.cs

📁 这是用C#数据库编程的实例
💻 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 + -