using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using AIMSModel;
using AIMSObjectQuery;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using HelperDB;
namespace AIMSDAL
{
    public partial class DUseDrugsReport
    {
        #region 插入实体操作部份
        /// 
        /// 插入
        /// 
        /// Command对象
        /// 实体类对象
        /// 标识列值或影响的记录行数
        public static int Insert(SqlCommand cmd, UseDrugsReport useDrugsReport)
        {
		    cmd.Parameters.Clear();
			cmd.CommandText = "insert into UseDrugsReport (用药Id,加药时间,使用日期,患者姓名,性别,年龄,住院号,病历号,身份证号码,疾病名称,药品名称,剩余药品弃取记录,批号,处方剂量,用量,残留剂量,残液处理方式,残液处理地点,处方医师,执行护士,复核人,核对护士,术间,医生签名,医生签名2,护士签名,PatientRecordId,State,Num,SpecUnit,Enter,镇痛泵使用量,镇痛泵余量) values (@用药Id,@加药时间,@使用日期,@患者姓名,@性别,@年龄,@住院号,@病历号,@身份证号码,@疾病名称,@药品名称,@剩余药品弃取记录,@批号,@处方剂量,@用量,@残留剂量,@残液处理方式,@残液处理地点,@处方医师,@执行护士,@复核人,@核对护士,@术间,@医生签名,@医生签名2,@护士签名,@PatientRecordId,@State,@Num,@SpecUnit,@Enter,@镇痛泵使用量,@镇痛泵余量);select @@identity";
			//从实体中取出值放入Command的参数列表
			cmd.Parameters.Add(new SqlParameter("@用药Id",useDrugsReport.用药Id.HasValue?(object)useDrugsReport.用药Id.Value:(object)DBNull.Value));
			cmd.Parameters.Add(new SqlParameter("@加药时间",useDrugsReport.加药时间.HasValue?(object)useDrugsReport.加药时间.Value:(object)DBNull.Value));
			cmd.Parameters.Add(new SqlParameter("@使用日期",useDrugsReport.使用日期==null?(object)DBNull.Value:(object)useDrugsReport.使用日期));
			cmd.Parameters.Add(new SqlParameter("@患者姓名",useDrugsReport.患者姓名==null?(object)DBNull.Value:(object)useDrugsReport.患者姓名));
			cmd.Parameters.Add(new SqlParameter("@性别",useDrugsReport.性别==null?(object)DBNull.Value:(object)useDrugsReport.性别));
			cmd.Parameters.Add(new SqlParameter("@年龄",useDrugsReport.年龄==null?(object)DBNull.Value:(object)useDrugsReport.年龄));
			cmd.Parameters.Add(new SqlParameter("@住院号",useDrugsReport.住院号==null?(object)DBNull.Value:(object)useDrugsReport.住院号));
			cmd.Parameters.Add(new SqlParameter("@病历号",useDrugsReport.病历号==null?(object)DBNull.Value:(object)useDrugsReport.病历号));
			cmd.Parameters.Add(new SqlParameter("@身份证号码",useDrugsReport.身份证号码==null?(object)DBNull.Value:(object)useDrugsReport.身份证号码));
            cmd.Parameters.Add(new SqlParameter("@疾病名称", useDrugsReport.疾病名称 == null ? (object)DBNull.Value : (object)useDrugsReport.疾病名称));
            cmd.Parameters.Add(new SqlParameter("@药品名称", useDrugsReport.药品名称 == null ? (object)DBNull.Value : (object)useDrugsReport.药品名称));
            cmd.Parameters.Add(new SqlParameter("@剩余药品弃取记录", useDrugsReport.剩余药品弃取记录 == null ? (object)DBNull.Value : (object)useDrugsReport.剩余药品弃取记录));
            cmd.Parameters.Add(new SqlParameter("@批号", useDrugsReport.批号 == null ? (object)DBNull.Value : (object)useDrugsReport.批号));
            cmd.Parameters.Add(new SqlParameter("@处方剂量", useDrugsReport.处方剂量 == null ? (object)DBNull.Value : (object)useDrugsReport.处方剂量));
            cmd.Parameters.Add(new SqlParameter("@用量", useDrugsReport.用量 == null ? (object)DBNull.Value : (object)useDrugsReport.用量));
            cmd.Parameters.Add(new SqlParameter("@残留剂量", useDrugsReport.残留剂量 == null ? (object)DBNull.Value : (object)useDrugsReport.残留剂量));
            cmd.Parameters.Add(new SqlParameter("@残液处理方式", useDrugsReport.残液处理方式 == null ? (object)DBNull.Value : (object)useDrugsReport.残液处理方式));
            cmd.Parameters.Add(new SqlParameter("@残液处理地点", useDrugsReport.残液处理地点 == null ? (object)DBNull.Value : (object)useDrugsReport.残液处理地点));
            cmd.Parameters.Add(new SqlParameter("@处方医师", useDrugsReport.处方医师 == null ? (object)DBNull.Value : (object)useDrugsReport.处方医师));
            cmd.Parameters.Add(new SqlParameter("@执行护士", useDrugsReport.执行护士 == null ? (object)DBNull.Value : (object)useDrugsReport.执行护士));
            cmd.Parameters.Add(new SqlParameter("@复核人", useDrugsReport.复核人 == null ? (object)DBNull.Value : (object)useDrugsReport.复核人));
            cmd.Parameters.Add(new SqlParameter("@核对护士", useDrugsReport.核对护士 == null ? (object)DBNull.Value : (object)useDrugsReport.核对护士));
            cmd.Parameters.Add(new SqlParameter("@术间", useDrugsReport.术间 == null ? (object)DBNull.Value : (object)useDrugsReport.术间));
            cmd.Parameters.Add(new SqlParameter("@医生签名", useDrugsReport.医生签名 == null ? (object)DBNull.Value : (object)useDrugsReport.医生签名));
            cmd.Parameters.Add(new SqlParameter("@医生签名2", useDrugsReport.医生签名2 == null ? (object)DBNull.Value : (object)useDrugsReport.医生签名2));
			cmd.Parameters.Add(new SqlParameter("@护士签名",useDrugsReport.护士签名==null?(object)DBNull.Value:(object)useDrugsReport.护士签名));
			cmd.Parameters.Add(new SqlParameter("@PatientRecordId",useDrugsReport.PatientRecordId.HasValue?(object)useDrugsReport.PatientRecordId.Value:(object)DBNull.Value));
			cmd.Parameters.Add(new SqlParameter("@State",useDrugsReport.State.HasValue?(object)useDrugsReport.State.Value:(object)DBNull.Value));
			cmd.Parameters.Add(new SqlParameter("@Num",useDrugsReport.Num.HasValue?(object)useDrugsReport.Num.Value:(object)DBNull.Value));
			cmd.Parameters.Add(new SqlParameter("@SpecUnit",useDrugsReport.SpecUnit==null?(object)DBNull.Value:(object)useDrugsReport.SpecUnit));
			cmd.Parameters.Add(new SqlParameter("@Enter",useDrugsReport.Enter.HasValue?(object)useDrugsReport.Enter.Value:(object)DBNull.Value));
			cmd.Parameters.Add(new SqlParameter("@镇痛泵使用量",useDrugsReport.镇痛泵使用量==null?(object)DBNull.Value:(object)useDrugsReport.镇痛泵使用量));
			cmd.Parameters.Add(new SqlParameter("@镇痛泵余量",useDrugsReport.镇痛泵余量==null?(object)DBNull.Value:(object)useDrugsReport.镇痛泵余量));
			return Convert.ToInt32(cmd.ExecuteScalar());
		}
	    /// 
        /// 不使用事务的插入方法
        /// 
        /// 实体类对象
        /// 标识列值或影响的记录行数
        public static int Insert(UseDrugsReport useDrugsReport)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return Insert(cmd, useDrugsReport);
                }
            }
        }
        /// 
        /// 使用事务的插入方法
        /// 
        /// 实现共享Connection的对象
        /// 实体类对象
        /// 标识列值或影响的记录行数
        public static int Insert(Connection connection, UseDrugsReport useDrugsReport)
        {
            return Insert(connection.Command, useDrugsReport);
        }
        #endregion
        #region 删除实体操作
        /// 
        /// 删除
        /// 
        /// Command对象
        /// 实体类对象
        /// 影响的记录行数
        public static int ExcuteDeleteCommand(SqlCommand cmd, UseDrugsReport useDrugsReport)
        {
            cmd.Parameters.Clear();
            cmd.CommandText = "delete from UseDrugsReport where Id=@Id";
            //从实体中取出值放入Command的参数列表
            cmd.Parameters.Add(new SqlParameter("@Id", useDrugsReport.Id));
            return cmd.ExecuteNonQuery();
        }
        /// 
        /// 不使用事务的删除方法
        /// 
        /// 实体类对象
        /// 影响的记录行数
        public static int Delete(UseDrugsReport useDrugsReport)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return ExcuteDeleteCommand(cmd, useDrugsReport);
                }
            }
        }
        /// 
        /// 使用事务的删除方法
        /// 
        /// 实现共享Connection的对象
        /// 实体类对象
        /// 影响的记录行数
        public static int Delete(Connection connection, UseDrugsReport useDrugsReport)
        {
            return ExcuteDeleteCommand(connection.Command, useDrugsReport);
        }
        /// 
        /// 执行删除命令
        /// 
        /// Command对象
        /// 对象查询语句
        /// 参数列表
        /// 影响的记录行数
        public static int ExcuteDeleteCommand(SqlCommand cmd, string oql, ParameterList parameters)
        {
            //解析过滤部份Sql语句
            string filterString = SyntaxAnalyzer.ParseSql(oql, new UseDrugsReportMap());
            if (filterString != string.Empty)
            {
                filterString = " where " + filterString;
            }
            cmd.Parameters.Clear();
            cmd.CommandText = "delete from UseDrugsReport " + filterString;
            //添加参数
            if (parameters != null)
            {
                foreach (string key in parameters.Keys)
                {
                    cmd.Parameters.Add(new SqlParameter(key, parameters[key]));
                }
            }
            return cmd.ExecuteNonQuery();
        }
        /// 
        /// 不使用事务的删除方法
        /// 
        /// 对象查询语句
        /// 参数列表
        /// 影响的记录行数
        public static int Delete(string oql, ParameterList parameters)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return ExcuteDeleteCommand(cmd, oql, parameters);
                }
            }
        }
        /// 
        /// 使用事务的删除方法
        /// 
        /// 实现共享Connection的对象
        /// 对象查询语句
        /// 参数列表
        /// 影响的记录行数
        public static int Delete(Connection connection, string oql, ParameterList parameters)
        {
            return ExcuteDeleteCommand(connection.Command, oql, parameters);
        }
        #endregion
        #region 更新实体操作
        /// 
        /// 更新
        /// 
        /// Command对象
        /// 实体类对象
        /// 影响的记录行数
        public static int ExcuteUpdateCommand(SqlCommand cmd, UseDrugsReport useDrugsReport)
        {
		    cmd.CommandText = "update UseDrugsReport set 用药Id=@用药Id,加药时间=@加药时间,使用日期=@使用日期,患者姓名=@患者姓名,性别=@性别,年龄=@年龄,住院号=@住院号,病历号=@病历号,身份证号码=@身份证号码,疾病名称=@疾病名称,药品名称=@药品名称,剩余药品弃取记录=@剩余药品弃取记录,批号=@批号,处方剂量=@处方剂量,用量=@用量,残留剂量=@残留剂量,残液处理方式=@残液处理方式,残液处理地点=@残液处理地点,处方医师=@处方医师,执行护士=@执行护士,复核人=@复核人,核对护士=@核对护士,术间=@术间,医生签名=@医生签名,医生签名2=@医生签名2,护士签名=@护士签名,PatientRecordId=@PatientRecordId,State=@State,Num=@Num,SpecUnit=@SpecUnit,Enter=@Enter,镇痛泵使用量=@镇痛泵使用量,镇痛泵余量=@镇痛泵余量 where Id=@Id";
			//从实体中取出值放入Command的参数列表
			cmd.Parameters.Add(new SqlParameter("@用药Id",useDrugsReport.用药Id.HasValue?(object)useDrugsReport.用药Id.Value:(object)DBNull.Value));
			cmd.Parameters.Add(new SqlParameter("@加药时间",useDrugsReport.加药时间.HasValue?(object)useDrugsReport.加药时间.Value:(object)DBNull.Value));
			cmd.Parameters.Add(new SqlParameter("@使用日期",useDrugsReport.使用日期==null?(object)DBNull.Value:(object)useDrugsReport.使用日期));
			cmd.Parameters.Add(new SqlParameter("@患者姓名",useDrugsReport.患者姓名==null?(object)DBNull.Value:(object)useDrugsReport.患者姓名));
			cmd.Parameters.Add(new SqlParameter("@性别",useDrugsReport.性别==null?(object)DBNull.Value:(object)useDrugsReport.性别));
			cmd.Parameters.Add(new SqlParameter("@年龄",useDrugsReport.年龄==null?(object)DBNull.Value:(object)useDrugsReport.年龄));
			cmd.Parameters.Add(new SqlParameter("@住院号",useDrugsReport.住院号==null?(object)DBNull.Value:(object)useDrugsReport.住院号));
			cmd.Parameters.Add(new SqlParameter("@病历号",useDrugsReport.病历号==null?(object)DBNull.Value:(object)useDrugsReport.病历号));
			cmd.Parameters.Add(new SqlParameter("@身份证号码",useDrugsReport.身份证号码==null?(object)DBNull.Value:(object)useDrugsReport.身份证号码));
			cmd.Parameters.Add(new SqlParameter("@疾病名称",useDrugsReport.疾病名称==null?(object)DBNull.Value:(object)useDrugsReport.疾病名称));
			cmd.Parameters.Add(new SqlParameter("@药品名称",useDrugsReport.药品名称==null?(object)DBNull.Value:(object)useDrugsReport.药品名称));
			cmd.Parameters.Add(new SqlParameter("@剩余药品弃取记录",useDrugsReport.剩余药品弃取记录==null?(object)DBNull.Value:(object)useDrugsReport.剩余药品弃取记录));
			cmd.Parameters.Add(new SqlParameter("@批号",useDrugsReport.批号==null?(object)DBNull.Value:(object)useDrugsReport.批号));
			cmd.Parameters.Add(new SqlParameter("@处方剂量",useDrugsReport.处方剂量==null?(object)DBNull.Value:(object)useDrugsReport.处方剂量));
			cmd.Parameters.Add(new SqlParameter("@用量",useDrugsReport.用量==null?(object)DBNull.Value:(object)useDrugsReport.用量));
			cmd.Parameters.Add(new SqlParameter("@残留剂量",useDrugsReport.残留剂量==null?(object)DBNull.Value:(object)useDrugsReport.残留剂量));
			cmd.Parameters.Add(new SqlParameter("@残液处理方式",useDrugsReport.残液处理方式==null?(object)DBNull.Value:(object)useDrugsReport.残液处理方式));
			cmd.Parameters.Add(new SqlParameter("@残液处理地点",useDrugsReport.残液处理地点==null?(object)DBNull.Value:(object)useDrugsReport.残液处理地点));
			cmd.Parameters.Add(new SqlParameter("@处方医师",useDrugsReport.处方医师==null?(object)DBNull.Value:(object)useDrugsReport.处方医师));
			cmd.Parameters.Add(new SqlParameter("@执行护士",useDrugsReport.执行护士==null?(object)DBNull.Value:(object)useDrugsReport.执行护士));
			cmd.Parameters.Add(new SqlParameter("@复核人",useDrugsReport.复核人==null?(object)DBNull.Value:(object)useDrugsReport.复核人));
			cmd.Parameters.Add(new SqlParameter("@核对护士",useDrugsReport.核对护士==null?(object)DBNull.Value:(object)useDrugsReport.核对护士));
			cmd.Parameters.Add(new SqlParameter("@术间",useDrugsReport.术间==null?(object)DBNull.Value:(object)useDrugsReport.术间));
			cmd.Parameters.Add(new SqlParameter("@医生签名",useDrugsReport.医生签名==null?(object)DBNull.Value:(object)useDrugsReport.医生签名));
			cmd.Parameters.Add(new SqlParameter("@医生签名2",useDrugsReport.医生签名2==null?(object)DBNull.Value:(object)useDrugsReport.医生签名2));
			cmd.Parameters.Add(new SqlParameter("@护士签名",useDrugsReport.护士签名==null?(object)DBNull.Value:(object)useDrugsReport.护士签名));
			cmd.Parameters.Add(new SqlParameter("@PatientRecordId",useDrugsReport.PatientRecordId.HasValue?(object)useDrugsReport.PatientRecordId.Value:(object)DBNull.Value));
			cmd.Parameters.Add(new SqlParameter("@State",useDrugsReport.State.HasValue?(object)useDrugsReport.State.Value:(object)DBNull.Value));
			cmd.Parameters.Add(new SqlParameter("@Num",useDrugsReport.Num.HasValue?(object)useDrugsReport.Num.Value:(object)DBNull.Value));
			cmd.Parameters.Add(new SqlParameter("@SpecUnit",useDrugsReport.SpecUnit==null?(object)DBNull.Value:(object)useDrugsReport.SpecUnit));
			cmd.Parameters.Add(new SqlParameter("@Enter",useDrugsReport.Enter.HasValue?(object)useDrugsReport.Enter.Value:(object)DBNull.Value));
			cmd.Parameters.Add(new SqlParameter("@镇痛泵使用量",useDrugsReport.镇痛泵使用量==null?(object)DBNull.Value:(object)useDrugsReport.镇痛泵使用量));
			cmd.Parameters.Add(new SqlParameter("@镇痛泵余量",useDrugsReport.镇痛泵余量==null?(object)DBNull.Value:(object)useDrugsReport.镇痛泵余量));
			cmd.Parameters.Add(new SqlParameter("@Id", useDrugsReport.Id));
            return cmd.ExecuteNonQuery();
		}
        /// 
        /// 不使用事务的更新方法
        /// 
        /// 实体类对象
        /// 影响的记录行数
        public static int Update(UseDrugsReport useDrugsReport)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return ExcuteUpdateCommand(cmd, useDrugsReport);
                }
            }
        }
        /// 
        /// 使用事务的更新方法
        /// 
        /// 实现共享Connection的对象
        /// 实体类对象
        /// 影响的记录行数
        public static int Update(Connection connection, UseDrugsReport useDrugsReport)
        {
            return ExcuteUpdateCommand(connection.Command, useDrugsReport);
        }
        /// 
        /// 执行更新命令
        /// 
        /// Command对象
        /// 对象查询语句
        /// 参数列表
        /// 影响的记录行数
        public static int ExcuteUpdateCommand(SqlCommand cmd, string oql, ParameterList parameters)
        {
            //解析过滤部份Sql语句
            string updateString = SyntaxAnalyzer.ParseSql(oql, new UseDrugsReportMap());
            cmd.CommandText = "update UseDrugsReport set " + updateString;
            cmd.Parameters.Clear();
            //添加参数
            if (parameters != null)
            {
                foreach (string key in parameters.Keys)
                {
                    cmd.Parameters.Add(new SqlParameter(key, parameters[key]));
                }
            }
            return cmd.ExecuteNonQuery();
        }
        /// 
        /// 不使用事务的更新方法
        /// 
        /// 对象查询语句
        /// 参数列表
        /// 影响的记录行数
        public static int Update(string oql, ParameterList parameters)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return ExcuteUpdateCommand(cmd, oql, parameters);
                }
            }
        }
        /// 
        /// 使用事务的更新方法
        /// 
        /// 实现共享Connection的对象
        /// 对象查询语句
        /// 参数列表
        /// 影响的记录行数
        public static int Update(Connection connection, string oql, ParameterList parameters)
        {
            return ExcuteUpdateCommand(connection.Command, oql, parameters);
        }
        #endregion
        #region 查询实体集合
        /// 
        /// 执行Command获取对象列表
        /// 
        /// Command对象
        /// 递归类型
        /// 递归深度
        /// 实体类对象列表
        public static List ExcuteSelectCommand(SqlCommand cmd, RecursiveType recursiveType, int recursiveDepth)
        {
            List useDrugsReportList = new List();
            using (SqlDataReader dr = cmd.ExecuteReader())
            {
                while (dr.Read())
                {
                    UseDrugsReport useDrugsReport = DataReaderToEntity(dr);
                    useDrugsReportList.Add(useDrugsReport);
                }
            }
            return useDrugsReportList;
        }
        /// 
        /// 执行查询命令
        /// 
        /// Command对象
        /// 对象查询语句
        /// 参数列表
        /// 递归类型
        /// 递归深度
        /// 实体类对象集合
        public static List ExcuteSelectCommand(SqlCommand cmd, string oql, ParameterList parameters, RecursiveType recursiveType, int recursiveDepth)
        {
            //解析过滤部份Sql语句
            string filterString = SyntaxAnalyzer.ParseSql(oql, new UseDrugsReportMap());
            if (filterString != string.Empty)
            {
                if (filterString.Trim().ToLower().IndexOf("order ") != 0)
                    filterString = " where " + filterString;
            }
            cmd.Parameters.Clear();
            cmd.CommandText = "select * from UseDrugsReport " + filterString;
            //添加参数
            if (parameters != null)
            {
                foreach (string key in parameters.Keys)
                {
                    cmd.Parameters.Add(new SqlParameter(key, parameters[key]));
                }
            }
            return ExcuteSelectCommand(cmd, recursiveType, recursiveDepth);
        }
        /// 
        /// 根据对象查询语句查询实体集合
        /// 
        /// 实体类对象集合
        public static List Select()
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "select * from UseDrugsReport";
                    return ExcuteSelectCommand(cmd, RecursiveType.Parent, 1);
                }
            }
        }
        /// 
        /// 根据对象查询语句查询实体集合
        /// 
        /// 递归类型
        /// 递归深度
        /// 实体类对象集合
        public static List Select(RecursiveType recursiveType, int recursiveDepth)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "select * from UseDrugsReport";
                    return ExcuteSelectCommand(cmd, recursiveType, recursiveDepth);
                }
            }
        }
        /// 
        /// 根据对象查询语句查询实体集合
        /// 
        /// 对象查询语句
        /// 参数列表
        /// 实体类对象集合
        public static List Select(string oql, ParameterList parameters)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return ExcuteSelectCommand(cmd, oql, parameters, RecursiveType.Parent, 1);
                }
            }
        }
        /// 
        /// 根据对象查询语句查询实体集合
        /// 
        /// 对象查询语句
        /// 参数列表
        /// 递归类型
        /// 递归深度
        /// 实体类对象集合
        public static List Select(string oql, ParameterList parameters, RecursiveType recursiveType, int recursiveDepth)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return ExcuteSelectCommand(cmd, oql, parameters, recursiveType, recursiveDepth);
                }
            }
        }
        /// 
        /// 根据对象查询语句查询实体集合(启用事务)
        /// 
        /// 连接对象
        /// 对象查询语句
        /// 参数列表
        /// 递归类型
        /// 递归深度
        /// 实体类对象集合
        public static List Select(Connection connection, string oql, ParameterList parameters, RecursiveType recursiveType, int recursiveDepth)
        {
            return ExcuteSelectCommand(connection.Command, oql, parameters, recursiveType, recursiveDepth);
        }
        #endregion
        #region 查询单个实体
        /// 
        /// 递归查询单个实体
        /// 
        /// Command对象
        /// 递归类型
        /// 递归深度
        /// 实体对象
        public static UseDrugsReport ExcuteSelectSingleCommand(SqlCommand cmd, RecursiveType recursiveType, int recursiveDepth)
        {
            UseDrugsReport useDrugsReport = null;
            using (SqlDataReader dr = cmd.ExecuteReader())
            {
                if (dr.Read())
                    useDrugsReport = DataReaderToEntity(dr);
            }
            if (useDrugsReport == null)
                return useDrugsReport;
            return useDrugsReport;
        }
        /// 
        /// 更据对象查询语句递归查询单个实体
        /// 
        /// Command对象
        /// 对象查询语句
        /// 参数列表
        /// 递归类型
        /// 递归深度
        /// 实体对象
        public static UseDrugsReport ExcuteSelectSingleCommand(SqlCommand cmd, string oql, ParameterList parameters, RecursiveType recursiveType, int recursiveDepth)
        {
            //解析过滤部份Sql语句
            string filterString = SyntaxAnalyzer.ParseSql(oql, new UseDrugsReportMap());
            if (filterString != string.Empty)
            {
                filterString = " where " + filterString;
            }
            cmd.CommandText = "select * from UseDrugsReport " + filterString;
            cmd.Parameters.Clear();
            //添加参数
            if (parameters != null)
            {
                foreach (string key in parameters.Keys)
                {
                    cmd.Parameters.Add(new SqlParameter(key, parameters[key]));
                }
            }
            return ExcuteSelectSingleCommand(cmd, recursiveType, recursiveDepth);
        }
        /// 
        /// 更据对象查询语句递归查询单个实体
        /// 
        /// Command对象
        /// 对象查询语句
        /// 参数列表
        /// 递归类型
        /// 递归深度
        /// 实体对象
        public static UseDrugsReport SelectSingle(string oql, ParameterList parameters, RecursiveType recursiveType, int recursiveDepth)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return ExcuteSelectSingleCommand(cmd, oql, parameters, recursiveType, recursiveDepth);
                }
            }
        }
        /// 
        /// 更据对象查询语句查询单个实体
        /// 
        /// Command对象
        /// 对象查询语句
        /// 参数列表
        /// 实体对象
        public static UseDrugsReport SelectSingle(string oql, ParameterList parameters)
        {
            return SelectSingle(oql, parameters, RecursiveType.Parent, 1);
        }
        /// 
        /// 更据对象查询语句并启用事务查询单个实体
        /// 
        /// 连接对象
        /// 对象查询语句
        /// 参数列表
        /// 实体对象
        public static UseDrugsReport SelectSingle(Connection connection, string oql, ParameterList parameters, RecursiveType recursiveType, int recursiveDepth)
        {
            return ExcuteSelectSingleCommand(connection.Command, oql, parameters, recursiveType, recursiveDepth);
        }
        /// 
        /// 更据主键值递归查询单个实体
        /// 
        /// Command对象
        /// 主键值
        /// 递归类型
        /// 递归深度
        /// 实体对象
        public static UseDrugsReport SelectSingle(SqlCommand cmd, int? id, RecursiveType recursiveType, int recursiveDepth)
        {
            cmd.Parameters.Clear();
            if (id.HasValue)
            {
                cmd.CommandText = "select * from UseDrugsReport where Id=@pk";
                cmd.Parameters.Add(new SqlParameter("@pk", id.Value));
            }
            else
            {
                cmd.CommandText = "select * from UseDrugsReport where Id is null";
            }
            return ExcuteSelectSingleCommand(cmd, recursiveType, recursiveDepth);
        }
        /// 
        /// 按主键字段查询特定实体
        /// 
        /// 主键值
        /// 实体类对象
        public static UseDrugsReport SelectSingle(int? id)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return SelectSingle(cmd, id, RecursiveType.Parent, 1);
                }
            }
        }
        /// 
        /// 按主键字段查询特定实体
        /// 
        /// 主键值
        /// 递归类型
        /// 递归深度
        /// 实体类对象
        public static UseDrugsReport SelectSingle(int? id, RecursiveType recursiveType, int recursiveDepth)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return SelectSingle(cmd, id, recursiveType, recursiveDepth);
                }
            }
        }
        /// 
        /// 使用事务并按主键字段查询特定实体
        /// 
        /// 连接对象
        /// 主键值
        /// 实体类对象
        public static UseDrugsReport SelectSingle(Connection connection, int? id, RecursiveType recursiveType, int recursiveDepth)
        {
            return SelectSingle(connection.Command, id, recursiveType, recursiveDepth);
        }
        #endregion
        /// 
        /// 从DataReader中取出值生成实体对象
        /// 
        /// 查询对象
        /// 过滤条件字符串
        private static UseDrugsReport DataReaderToEntity(SqlDataReader dr)
        {
            UseDrugsReport entity = new UseDrugsReport();
            if (dr["Id"] != System.DBNull.Value)
            {
                entity.Id = Convert.ToInt32(dr["Id"]);
            }
            if (dr["用药Id"] != System.DBNull.Value)
            {
                entity.用药Id = Convert.ToInt32(dr["用药Id"]);
            }
            if (dr["加药时间"] != System.DBNull.Value)
            {
                entity.加药时间 = Convert.ToDateTime(dr["加药时间"]);
            }
            if (dr["使用日期"] != System.DBNull.Value)
            {
                entity.使用日期 = dr["使用日期"].ToString();
            }
            if (dr["患者姓名"] != System.DBNull.Value)
            {
                entity.患者姓名 = dr["患者姓名"].ToString();
            }
            if (dr["性别"] != System.DBNull.Value)
            {
                entity.性别 = dr["性别"].ToString();
            }
            if (dr["年龄"] != System.DBNull.Value)
            {
                entity.年龄 = dr["年龄"].ToString();
            }
            if (dr["住院号"] != System.DBNull.Value)
            {
                entity.住院号 = dr["住院号"].ToString();
            }
            if (dr["病历号"] != System.DBNull.Value)
            {
                entity.病历号 = dr["病历号"].ToString();
            }
            if (dr["身份证号码"] != System.DBNull.Value)
            {
                entity.身份证号码 = dr["身份证号码"].ToString();
            }
            if (dr["疾病名称"] != System.DBNull.Value)
            {
                entity.疾病名称 = dr["疾病名称"].ToString();
            }
            if (dr["药品名称"] != System.DBNull.Value)
            {
                entity.药品名称 = dr["药品名称"].ToString();
            }
            if (dr["剩余药品弃取记录"] != System.DBNull.Value)
            {
                entity.剩余药品弃取记录 = dr["剩余药品弃取记录"].ToString();
            }
            if (dr["批号"] != System.DBNull.Value)
            {
                entity.批号 = dr["批号"].ToString();
            }
            if (dr["处方剂量"] != System.DBNull.Value)
            {
                entity.处方剂量 = dr["处方剂量"].ToString();
            }
            if (dr["用量"] != System.DBNull.Value)
            {
                entity.用量 = dr["用量"].ToString();
            }
            if (dr["残留剂量"] != System.DBNull.Value)
            {
                entity.残留剂量 = dr["残留剂量"].ToString();
            }
            if (dr["残液处理方式"] != System.DBNull.Value)
            {
                entity.残液处理方式 = dr["残液处理方式"].ToString();
            }
            if (dr["残液处理地点"] != System.DBNull.Value)
            {
                entity.残液处理地点 = dr["残液处理地点"].ToString();
            }
            if (dr["处方医师"] != System.DBNull.Value)
            {
                entity.处方医师 = dr["处方医师"].ToString();
            }
            if (dr["执行护士"] != System.DBNull.Value)
            {
                entity.执行护士 = dr["执行护士"].ToString();
            }
            if (dr["复核人"] != System.DBNull.Value)
            {
                entity.复核人 = dr["复核人"].ToString();
            }
            if (dr["核对护士"] != System.DBNull.Value)
            {
                entity.核对护士 = dr["核对护士"].ToString();
            }
            
			if(dr["Enter"]!=System.DBNull.Value)
			{
			    entity.Enter=Convert.ToInt32(dr["Enter"]);
			}
			if(dr["Num"]!=System.DBNull.Value)
			{
			    entity.Num=Convert.ToInt32(dr["Num"]);
			}
			if(dr["SpecUnit"]!=System.DBNull.Value)
			{
			    entity.SpecUnit=dr["SpecUnit"].ToString();
			}
            if (dr["术间"] != System.DBNull.Value)
            {
                entity.术间 = dr["术间"].ToString();
            }
            if (dr["医生签名"] != System.DBNull.Value)
            {
                entity.医生签名 = dr["医生签名"].ToString();
            }
            if (entity.医生签名 != null && entity.医生签名 != "")
            {
                entity.医生签名Img = BytesToImage(Convert.FromBase64String(entity.医生签名));
            }
            if (dr["医生签名2"] != System.DBNull.Value)
            {
                entity.医生签名2 = dr["医生签名2"].ToString();
            }
            if (entity.医生签名2 != null && entity.医生签名2 != "")
            {
                entity.医生签名2Img = BytesToImage(Convert.FromBase64String(entity.医生签名2));
            }
            if (dr["护士签名"] != System.DBNull.Value)
            {
                entity.护士签名 = dr["护士签名"].ToString();
            }
            if (entity.护士签名 != null && entity.护士签名 != "")
            {
                entity.护士签名Img = BytesToImage(Convert.FromBase64String(entity.护士签名));
            }
            if (dr["PatientRecordId"] != System.DBNull.Value)
            {
                entity.PatientRecordId = Convert.ToInt32(dr["PatientRecordId"]);
            }
            if (dr["State"] != System.DBNull.Value)
            {
                entity.State = Convert.ToInt32(dr["State"]);
            }
			if(dr["镇痛泵使用量"]!=System.DBNull.Value)
			{
			    entity.镇痛泵使用量=dr["镇痛泵使用量"].ToString();
			}
			if(dr["镇痛泵余量"]!=System.DBNull.Value)
			{
			    entity.镇痛泵余量=dr["镇痛泵余量"].ToString();
			}
            return entity;
        }
        ///   
        /// Byte[]转Image  
        ///   
        ///   
        ///   
        public static Image BytesToImage(byte[] buffer)
        {
            MemoryStream ms = new MemoryStream(buffer);
            Image image = Image.FromStream(ms);
            return image;
        }
        public static DataTable getUseDrugsReportNo(string Name)
        {
            string sql = string.Format("select top 5 批号 from  UseDrugsReport where 批号 like '%{0}%' order by id desc", Name);
            return DBHelper.GetDataTable(sql);
        }
    }
}