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

📄 adoconnectionwrapper.cs

📁 全功能c#编译器
💻 CS
📖 第 1 页 / 共 2 页
字号:
				case DbType.UInt64				: ret = ADODB.DataTypeEnum.adUnsignedBigInt; break;
				case DbType.VarNumeric			: ret = ADODB.DataTypeEnum.adVarNumeric; break;
				default							: throw new ArgumentOutOfRangeException("t");
			}
			
			return ret;			
		}
		
		
		
		///<summary>
		/// Execute a stocked procedure.
		/// <param name="schema">
		/// <see cref="SharpQuery.SchemaClass">SchemaClass</see> object.
		/// </param>
		/// <param name="rows">
		/// Maximum number of row to extract. If is "0" then all rows are extracted.
		/// </param>
		/// <returns> return a <see cref="System.Data.DataTable">DataTable</see>  
		///or a <see cref="System.Data.DataSet">DataSet</see> object.
		/// </returns>
		/// </summary>
		public override object ExecuteProcedure( ISchemaClass schema, int rows, SharpQuerySchemaClassCollection parameters )
		{		
			DataTable table = null;
			
			if ( schema == null )
			{
				throw new System.ArgumentNullException("schema");
			}

			ADODB.Recordset record = null;			
			ADODB.Command	command = new ADODB.Command();
			command.ActiveConnection = this.pADOConnection;			
			ADODB.Parameter para = null;							
			
			command.CommandText = schema.Name;
			command.CommandType = ADODB.CommandTypeEnum.adCmdStoredProc;
			
			if ( parameters != null )
			{				
				foreach( SharpQueryParameter classParam in parameters )
				{			
					para		  = new ADODB.Parameter();
					para.Type = DbTypeToDataType ( classParam.DataType );
					para.Direction = ParamDirectionToADODirection ( classParam.Type );
					para.Name = classParam.Name;
					if ( para.Name.StartsWith("[") )
					{
						para.Name = para.Name.Remove(0, 1);
					}
					if ( para.Name.EndsWith("]") )
					{
						para.Name = para.Name.Remove(para.Name.Length - 1, 1);
					}				
					para.Value = classParam.Value;
					command.Parameters.Append( para );
				}
			}
				
			this.pADOConnection.BeginTrans();
			
			try
			{						
				 record = (ADODB.Recordset)command.GetType().InvokeMember(
				            					"Execute",
				            					System.Reflection.BindingFlags.InvokeMethod,
				            					null,
				            					command,
				            					null);				

				//record.MaxRecords = rows;
				table = RecordSetToDataTable( record );

				//Procedure is ReadOnly
				table.DefaultView.AllowDelete = false;
				table.DefaultView.AllowEdit	  = false;
				table.DefaultView.AllowNew    = false;				
			}
			catch( System.Exception e)
			{
				if ( schema != null )
				{
					this.pADOConnection.RollbackTrans();
					
					string mes = schema.Name + "\n\r";
					
					foreach ( ADODB.Error err in this.pADOConnection.Errors )
					{
						mes += "-----------------\n\r";
						mes += err.Description + "\n\r";
						mes += err.NativeError + "\n\r";					
					}				
					throw new ExecuteProcedureException( mes );
				}
				else
				{
					throw new ExecuteProcedureException( e.Message );
				}
			}
			
			this.pADOConnection.CommitTrans();					
									
			return table;
		}
										
		///<summary>
		/// check the internal connection object is valid
		/// Throw an exception if pADOConnection == null
		///</summary>						
		protected override void CheckConnectionObject()
		{
			if ( this.pADOConnection == null )
   				throw new ArgumentNullException("pADONETConnection");			
		}				
			
		protected DataTable RecordSetToDataTable( ADODB.Recordset record )
		{
			OleDbDataAdapter custDA = new OleDbDataAdapter();
			DataTable custTable = new DataTable();
			custDA.Fill(custTable, record);
			return custTable;
		}
			
		protected override DataTable GetSchema( SharpQuerySchemaEnum schema, object[] restrictions)
		{
			ADODB.SchemaEnum internalSchema = 0;
			ADODB.Recordset ADOrecord = null;			
			
			switch ( schema ) {
				case SharpQuerySchemaEnum.Asserts :
					internalSchema = ADODB.SchemaEnum.adSchemaAsserts ;
					break;
				case SharpQuerySchemaEnum.Catalogs :
					internalSchema = ADODB.SchemaEnum.adSchemaCatalogs;
					break;
				case SharpQuerySchemaEnum.CharacterSets :
					internalSchema = ADODB.SchemaEnum.adSchemaCharacterSets;
					break;
				case SharpQuerySchemaEnum.CheckConstraints :
					internalSchema = ADODB.SchemaEnum.adSchemaCheckConstraints;
					break;
				case SharpQuerySchemaEnum.Collations :
					internalSchema = ADODB.SchemaEnum.adSchemaCollations;
					break;
				case SharpQuerySchemaEnum.ColumnPrivileges :
					internalSchema = ADODB.SchemaEnum.adSchemaColumnPrivileges;
					break;
				case SharpQuerySchemaEnum.Columns :
					internalSchema = ADODB.SchemaEnum.adSchemaColumns;
					break;
				case SharpQuerySchemaEnum.ColumnsDomainUsage :
					internalSchema = ADODB.SchemaEnum.adSchemaColumnsDomainUsage;
					break;
				case SharpQuerySchemaEnum.ConstraintColumnUsage :
					internalSchema = ADODB.SchemaEnum.adSchemaConstraintColumnUsage;
					break;
				case SharpQuerySchemaEnum.ConstaintTableUsage :
					internalSchema = ADODB.SchemaEnum.adSchemaConstraintTableUsage;
					break;
				case SharpQuerySchemaEnum.Cubes :
					internalSchema = ADODB.SchemaEnum.adSchemaCubes;
					break;
				case SharpQuerySchemaEnum.DBInfoKeyWords :
					internalSchema = ADODB.SchemaEnum.adSchemaDBInfoKeywords;
					break;
				case SharpQuerySchemaEnum.DBInfoLiterals :
					internalSchema = ADODB.SchemaEnum.adSchemaDBInfoLiterals;
					break;
				case SharpQuerySchemaEnum.Dimensions :
					internalSchema = ADODB.SchemaEnum.adSchemaDimensions;
					break;
				case SharpQuerySchemaEnum.ForeignKeys :
					internalSchema = ADODB.SchemaEnum.adSchemaForeignKeys;
					break;
				case SharpQuerySchemaEnum.Hierarchies :
					internalSchema = ADODB.SchemaEnum.adSchemaHierarchies;
					break;
				case SharpQuerySchemaEnum.Indexes :
					internalSchema = ADODB.SchemaEnum.adSchemaIndexes;
					break;
				case SharpQuerySchemaEnum.KeyColumnUsage :
					internalSchema = ADODB.SchemaEnum.adSchemaKeyColumnUsage;
					break;
				case SharpQuerySchemaEnum.Levels :
					internalSchema = ADODB.SchemaEnum.adSchemaLevels;
					break;
				case SharpQuerySchemaEnum.Measures :
					internalSchema = ADODB.SchemaEnum.adSchemaMeasures;
					break;
				case SharpQuerySchemaEnum.Members :
					internalSchema = ADODB.SchemaEnum.adSchemaMembers;
					break;
				case SharpQuerySchemaEnum.Null :
					break;				
				case SharpQuerySchemaEnum.PrimaryKeys :
					internalSchema = ADODB.SchemaEnum.adSchemaPrimaryKeys;
					break;
				case SharpQuerySchemaEnum.ProcedureColumns :
					internalSchema = ADODB.SchemaEnum.adSchemaProcedureColumns;
					break;
				case SharpQuerySchemaEnum.ProcedureParameters :
					internalSchema = ADODB.SchemaEnum.adSchemaProcedureParameters;
					break;
				case SharpQuerySchemaEnum.Procedures :
					internalSchema = ADODB.SchemaEnum.adSchemaProcedures;
					break;
				case SharpQuerySchemaEnum.Properties :
					internalSchema = ADODB.SchemaEnum.adSchemaProperties;
					break;
				case SharpQuerySchemaEnum.ProviderTypes :
					internalSchema = ADODB.SchemaEnum.adSchemaProviderTypes;
					break;
				case SharpQuerySchemaEnum.ReferentialConstraints :
					internalSchema = ADODB.SchemaEnum.adSchemaReferentialConstraints;
					break;
				case SharpQuerySchemaEnum.Schemata :
					internalSchema = ADODB.SchemaEnum.adSchemaSchemata;
					break;
				case SharpQuerySchemaEnum.SQLLanguages :
					internalSchema = ADODB.SchemaEnum.adSchemaSQLLanguages;
					break;
				case SharpQuerySchemaEnum.Statistics :
					internalSchema = ADODB.SchemaEnum.adSchemaStatistics;
					break;
				case SharpQuerySchemaEnum.TableConstraints :
					internalSchema = ADODB.SchemaEnum.adSchemaTableConstraints;
					break;
				case SharpQuerySchemaEnum.TablePrivileges :
					internalSchema = ADODB.SchemaEnum.adSchemaTablePrivileges;
					break;				
				case SharpQuerySchemaEnum.Tables :
				case SharpQuerySchemaEnum.Views :
					internalSchema = ADODB.SchemaEnum.adSchemaTables;
					break;
				case SharpQuerySchemaEnum.Tanslations :
					internalSchema = ADODB.SchemaEnum.adSchemaTranslations;
					break;
				case SharpQuerySchemaEnum.Trustees :
					internalSchema = ADODB.SchemaEnum.adSchemaTrustees;
					break;
				case SharpQuerySchemaEnum.UsagePrivileges :
					internalSchema = ADODB.SchemaEnum.adSchemaUsagePrivileges;
					break;
				case SharpQuerySchemaEnum.ViewColumnUsage :
					internalSchema = ADODB.SchemaEnum.adSchemaViewColumnUsage;
					break;
				case SharpQuerySchemaEnum.ViewColumns :
					internalSchema = ADODB.SchemaEnum.adSchemaColumns;
					break;				
				case SharpQuerySchemaEnum.ViewTableUsage :
					internalSchema = ADODB.SchemaEnum.adSchemaViewTableUsage;
					break;
				default:				
					throw new System.ArgumentException("", "schema");
			}
			
			if ( schema != SharpQuerySchemaEnum.Null )
			{
			 ADOrecord =  (ADODB.Recordset)this.pADOConnection.GetType().InvokeMember(
			            					"OpenSchema",
			            					System.Reflection.BindingFlags.InvokeMethod,
			            					null,
			           						this.pADOConnection,
			            					new Object[]{ internalSchema, this.NormalizeRestrictions( restrictions ) });			
			}			
			
			return RecordSetToDataTable(ADOrecord);
		}										
		
	}	
}

⌨️ 快捷键说明

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