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

📄 cdqa.cs

📁 小型项目组用的工作日志记录系统
💻 CS
字号:
/*
 * CDQA.cs
 * 
 * 作者:邱观琛
 * 创建时间:2002-5-28
 * 最后修改:2002-6-21
 * 
 * 
 * 提供一些对数据库进行快速访问的函数,例如取得一条或多条记录中的某一字段的值,
 * 设置一条或多条记录中的某一字段的值,根据ID快速得到记录,等等。
 * 
 */

using System;
using System.Collections;
using System.Data;
using System.Data.SqlClient;

namespace CFC
{
	/// <summary>
	/// 提供一些对数据库进行快速访问的函数。
	/// 调用任何成员函数时必须先调用类CDO中的函数Connect连接数据库。
	/// </summary>
	public class CDQA
	{
		private CDQA()
		{
		}


		#region public static object[] GetColumnData(string ColumnName, string Sql) : 在执行指定sql查询产生的记录集中,取得所有记录在指定字段上的值,并生成object数组存储
		/// <summary>
		/// 在执行指定sql查询产生的记录集中,取得所有记录在指定字段上的值,并生成object数组存储。
		/// </summary>
		/// <param name="ColumnName">需要取值的字段名</param>
		/// <param name="Sql">被执行以获得需取值的记录集的sql查询</param>
		/// <returns>保存取出的值的object数组</returns>
		public static object[] GetColumnData(string ColumnName, string Sql)
		{
			try
			{
				SqlDataReader sdr = CDO.GetDataReader(Sql);
				if (CError.HaveError()) return new object[0];
				ArrayList SemiResult = new ArrayList();
				while (sdr.Read())
					SemiResult.Add(sdr.GetValue(sdr.GetOrdinal(ColumnName)));
			
				object[] Result = new object[SemiResult.Count];
				SemiResult.CopyTo(Result);
				return Result;
			}
			catch (Exception e)
			{
				CError.ErrorMsg = e.Message;
				return new object[0];
			}
		}
		#endregion


		#region public static object GetColumnDataSingleRow(string ColumnName, string Sql) : 在执行指定sql查询产生的单行记录集中,取得这一条记录在指定字段上的值
		/// <summary>
		/// 在执行指定sql查询产生的单行记录集中,取得这一条记录在指定字段上的值。
		/// </summary>
		/// <param name="ColumnName">需要取值的字段名</param>
		/// <param name="Sql">被执行以获得需取值的记录的sql查询</param>
		/// <returns>保存取出的值的object变量</returns>
		public static object GetColumnDataSingleRow(string ColumnName, string Sql)
		{
			try
			{
				SqlDataReader sdr = CDO.GetDataReaderSingleRow(Sql);
				if (CError.HaveError()) return null;
				if (sdr.Read())
				{
					return sdr.GetValue(sdr.GetOrdinal(ColumnName));
				}
				else
				{
					return null;
				}
			}
			catch (Exception e)
			{
				CError.ErrorMsg = e.Message;
				return null;
			}
		}
		#endregion


		#region public static object GetColumnDataByID(string ColumnName, string TableName, decimal ID) : 根据ID查出表中的一条记录,取得该记录在指定字段上的值
		/// <summary>
		/// 根据ID查出表中的一条记录,取得该记录在指定字段上的值。
		/// </summary>
		/// <param name="ColumnName">需要取值的字段名</param>
		/// <param name="TableName">表名</param>
		/// <param name="ID">需要取值的记录的ID</param>
		/// <returns>保存取出的值的object变量</returns>
		public static object GetColumnDataByID(string ColumnName, string TableName, decimal ID)
		{
			string Sql = String.Format("select {0}ID,{1} from {0} where {0}ID='{2}'",TableName,ColumnName,ID);
			return GetColumnData(ColumnName,Sql);
		}
		#endregion


		#region public static DataTable GetColumnDataIntoDataTable(string ColumnName, string Sql) : 在执行指定sql查询产生的记录集中,取得所有记录在指定字段上的值,并生成DataTable存储
		/// <summary>
		/// 在执行指定sql查询产生的记录集中,取得所有记录在指定字段上的值,并生成DataTable存储。
		/// </summary>
		/// <param name="ColumnName">需要取值的字段名</param>
		/// <param name="Sql">被执行以获得需取值的记录集的sql查询</param>
		/// <returns>保存取出的值的DataTable</returns>
		public static DataTable GetColumnDataIntoDataTable(string ColumnName, string Sql)
		{
			try
			{
				SqlDataReader sdr = CDO.GetDataReader(Sql);
				if (CError.HaveError()) return null;

				DataTable dtResult = new DataTable();
				dtResult.Columns.Add(ColumnName);

				while (sdr.Read())
				{
					dtResult.Rows.Add(new object[] {sdr.GetValue(sdr.GetOrdinal(ColumnName))});
				}
			
				return dtResult;
			}
			catch (Exception e)
			{
				CError.ErrorMsg = e.Message;
				return null;
			}
		}
		#endregion




		#region public static void SetColumnData(string ColumnName, string Sql, object NewValue) : 在执行指定sql查询产生的DataTable中,修改所有记录中指定字段上的值
		/// <summary>
		/// 在执行指定sql查询产生的DataTable中,修改所有记录中指定字段上的值。
		/// </summary>
		/// <param name="ColumnName">需要修改值的字段名</param>
		/// <param name="Sql">被执行以获得需修改的记录的sql查询</param>
		/// <param name="NewValue">新值</param>
		public static void SetColumnData(string ColumnName, string Sql, object NewValue)
		{
			try
			{
				DataTable dt = CDO.GetDataTable(Sql);
				if (CError.HaveError()) return;
				foreach (DataRow dr in dt.Rows)
				{
					dr[ColumnName] = NewValue;
				}
				CDO.UpdateDataTable(Sql,dt);
			}
			catch (Exception e)
			{
				CError.ErrorMsg = e.Message;
				return;
			}
		}
		#endregion


		#region public static void SetColumnDataSingleRow(string ColumnName, string Sql, object NewValue) : 在执行指定sql查询产生的记录集中,修改第一条记录中指定字段上的值
		/// <summary>
		/// 在执行指定sql查询产生的记录集中,修改第一条记录中指定字段上的值。
		/// </summary>
		/// <param name="ColumnName">需要修改值的字段名</param>
		/// <param name="Sql">被执行以获得需修改的记录的sql查询</param>
		/// <param name="NewValue">新值</param>
		public static void SetColumnDataSingleRow(string ColumnName, string Sql, object NewValue)
		{
			try
			{
				DataTable dt = CDO.GetDataTable(Sql);
				if (CError.HaveError()) return;
				dt.Rows[0][ColumnName] = NewValue;
				CDO.UpdateDataTable(Sql,dt);
			}
			catch (Exception e)
			{
				CError.ErrorMsg = e.Message;
				return;
			}
		}
		#endregion


		#region public static void SetColumnDataByID(string ColumnName, string TableName, decimal ID, object NewValue) : 根据ID查出表中的一条记录。修改该记录在指定字段上的值
		/// <summary>
		/// 根据ID查出表中的一条记录。修改该记录在指定字段上的值。
		/// </summary>
		/// <param name="ColumnName">需要修改值的字段名</param>
		/// <param name="TableName">表名</param>
		/// <param name="ID">需要修改值的记录的ID</param>
		/// <param name="NewValue">新值</param>
		public static void SetColumnDataByID(string ColumnName, string TableName, decimal ID, object NewValue)
		{
			string Sql = String.Format("update {0} set {1}='{3}' where {0}ID='{2}'",TableName,ColumnName,ID,NewValue);
			CDO.Execute(Sql);
		}
		#endregion




		#region public static void ReverseBoolColumnDataByID(string ColumnName, string TableName, decimal ID) : 根据ID查出表中的一条记录。修改该记录的指定布尔类型字段的值,改成它的“非”
		/// <summary>
		/// 根据ID查出表中的一条记录。修改该记录的指定布尔类型字段的值,改成它的“非”。
		/// </summary>
		/// <param name="ColumnName">需要修改值的字段名,必须是布尔类型的</param>
		/// <param name="TableName">表名</param>
		/// <param name="ID">需要修改值的记录的ID</param>
		public static void ReverseBoolColumnDataByID(string ColumnName, string TableName, decimal ID)
		{
			string Sql = String.Format("update {0} set {1}=1-{1} where {0}ID='{2}'",TableName,ColumnName,ID);
			CDO.Execute(Sql);
		}
		#endregion




		#region public static DataTable GetDataTableByID(string TableName, decimal ID) : 根据ID查出表中的一条记录,存入DataTable内
		/// <summary>
		/// 根据ID查出表中的一条记录,存入DataTable内。
		/// </summary>
		/// <param name="TableName">表名</param>
		/// <param name="ID">需要取值的记录的ID</param>
		/// <returns>保存取出的记录的DataTable</returns>
		public static DataTable GetDataTableByID(string TableName, decimal ID)
		{
			string Sql = String.Format("select * from {0} where {0}ID='{1}'",TableName,ID);
			return CDO.GetDataTable(Sql);
		}
		#endregion
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -