adoconnectionwrapper.cs
来自「SharpDevelop2.0.0 c#开发免费工具」· CS 代码 · 共 554 行 · 第 1/2 页
CS
554 行
case DbType.Time: ret = ADODB.DataTypeEnum.adDBTime; break;
case DbType.UInt16: ret = ADODB.DataTypeEnum.adUnsignedSmallInt; break;
case DbType.UInt32: ret = ADODB.DataTypeEnum.adUnsignedInt; break;
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 + =
减小字号Ctrl + -
显示快捷键?