📄 adoconnectionwrapper.cs
字号:
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 + -