sharpqueryschemaclass.cs
来自「SharpDevelop2.0.0 c#开发免费工具」· CS 代码 · 共 798 行 · 第 1/2 页
CS
798 行
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Luc Morin" email=""/>
// <version>$Revision: 993 $</version>
// </file>
using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using SharpQuery.Collections;
using System.Reflection;
using ICSharpCode.Core;
using SharpQuery.Connection;
namespace SharpQuery.SchemaClass
{
//
// Children
//
///<summary>
/// Column class
///</summary>
public class SharpQueryColumn : AbstractSharpQuerySchemaClass
{
public override string NormalizedName
{
get
{
string normalizedName = "";
if ((this.OwnerName != "") && (this.OwnerName != null))
{
normalizedName += this.OwnerName + ".";
}
normalizedName += this.Name;
return normalizedName;
}
}
protected override void CreateEntitiesList()
{
}
public SharpQueryColumn(IConnection connection, string catalogName, string schemaName, string ownerName, string name)
: base(connection, catalogName, schemaName, ownerName, name)
{
}
protected override void OnRefresh()
{
//nothing !
}
///<summary>
/// For a Table or a View extract data.
/// For a stocked procedure, execute it :o).
/// <param name="rows">Number of row to extract. if "0", extract all rows.</param>
/// <returns><see cref="System.Data.DataTable">DataTable</see>
/// or a <see cref="System.Data.DataSet">DataSet</see> </returns>
/// </summary>
public override object Execute(int rows, SharpQuerySchemaClassCollection parameters)
{
//nothing
return null;
}
///<summary> return a <see cref="System.Windows.Forms.DataObject">DataObject</see>
///</summary>
public override DataObject DragObject
{
get
{
DataObject returnValue = new DataObject();
string extract = this.NormalizedName;
returnValue.SetData(typeof(string), extract);
return returnValue;
}
}
}
///<summary>
/// Procedurre's parameters class
///</summary>
public class SharpQueryParameter : AbstractSharpQuerySchemaClass
{
private DbType _dataType;
private object _value = null;
private ParameterDirection _type;
///<summary>
/// Data Type of the parameter
/// ( used only while extracting data or executing procedure )
///</summary>
public DbType DataType
{
get
{
return this._dataType;
}
set
{
this._dataType = value;
switch (value)
{
//string type
case DbType.AnsiString:
case DbType.AnsiStringFixedLength:
case DbType.String:
case DbType.StringFixedLength: this._value = new string((char[])null); break;
//array type
case DbType.Binary: this._value = new byte[8000]; break;
//bool type
case DbType.Boolean: this._value = new bool(); break;
//interger type
case DbType.SByte: this._value = new sbyte(); break;
case DbType.Byte: this._value = new byte(); break;
case DbType.Int16: this._value = new short(); break;
case DbType.Int32: this._value = new int(); break;
case DbType.Int64: this._value = new long(); break;
case DbType.UInt16: this._value = new ushort(); break;
case DbType.UInt32: this._value = new uint(); break;
case DbType.UInt64: this._value = new long(); break;
//Date type
case DbType.Date:
case DbType.DateTime:
case DbType.Time: this._value = new DateTime(); break;
//float type
case DbType.Decimal: this._value = new decimal(); break;
case DbType.Currency:
case DbType.VarNumeric:
case DbType.Double: this._value = new double(); break;
case DbType.Single: this._value = new float(); break;
//user defined
case DbType.Object: this._value = new object(); break;
//Guid
case DbType.Guid: this._value = new Guid(); break;
default: throw new ArgumentOutOfRangeException("value");
}
}
}
protected void SetValue(string value)
{
switch (this.DataType)
{
//string type
case DbType.Object:
case DbType.Binary:
case DbType.AnsiString:
case DbType.AnsiStringFixedLength:
case DbType.String:
case DbType.StringFixedLength: this._value = value; break;
case DbType.Boolean: this._value = bool.Parse(value); break;
case DbType.SByte: this._value = sbyte.Parse(value); break;
case DbType.Byte: this._value = byte.Parse(value); break;
case DbType.Int16: this._value = short.Parse(value); break;
case DbType.Int32: this._value = int.Parse(value); break;
case DbType.Int64: this._value = long.Parse(value); break;
case DbType.UInt16: this._value = ushort.Parse(value); break;
case DbType.UInt32: this._value = uint.Parse(value); break;
case DbType.UInt64: this._value = long.Parse(value); break;
case DbType.Date:
case DbType.DateTime:
case DbType.Time: this._value = DateTime.Parse(value); break;
case DbType.Decimal: this._value = decimal.Parse(value); break;
case DbType.Currency:
case DbType.VarNumeric:
case DbType.Double: this._value = double.Parse(value); break;
case DbType.Single: this._value = float.Parse(value); break;
case DbType.Guid: this._value = new Guid(value); break;
default: throw new ArgumentOutOfRangeException("value");
}
}
///<summary>
/// Value of the parameter
/// ( used only while extracting data or executing procedure )
///</summary>
public object Value
{
get
{
return this._value;
}
set
{
this.SetValue(value.ToString());
}
}
///<summary>
/// Value of the parameter
/// ( used only while extracting data or executing procedure )
///</summary>
public ParameterDirection Type
{
get
{
return this._type;
}
set
{
this._type = value;
}
}
public override string NormalizedName
{
get
{
string normalizedName = "";
if ((this.OwnerName != "") && (this.OwnerName != null))
{
normalizedName += this.OwnerName + ".";
}
normalizedName += this.Name;
return normalizedName;
}
}
protected override void CreateEntitiesList()
{
}
public SharpQueryParameter(IConnection connection, string catalogName, string schemaName, string ownerName, string name)
: base(connection, catalogName, schemaName, ownerName, name)
{
this.pEntities = null;
}
protected override void OnRefresh()
{
//nothing !
}
///<summary>
/// For a Table or a View extract data.
/// For a stocked procedure, execute it :o).
/// <param name="rows">Number of row to extract. if "0", extract all rows.</param>
/// <returns><see cref="System.Data.DataTable">DataTable</see></returns>
/// </summary>
public override object Execute(int rows, SharpQuerySchemaClassCollection parameters)
{
//nothing
return null;
}
///<summary> return a <see cref="System.Windows.Forms.DataObject">DataObject</see>
///</summary>
public override DataObject DragObject
{
get
{
DataObject returnValue = new DataObject();
string extract = NormalizedName;
returnValue.SetData(typeof(string), extract);
return returnValue;
}
}
}
///<summary>
/// Table class
///</summary>
public class SharpQueryProcedure : AbstractSharpQuerySchemaClass
{
public override string NormalizedName
{
get
{
if ((this.CatalogName != "") && (this.CatalogName != null))
{
return this.CatalogName + "." + this.Name;
}
else
{
return CheckWhiteSpace(this.Connection.GetProperty(AbstractSharpQueryConnectionWrapper.SharpQueryPropertyEnum.DataSource).ToString()) + "." + this.Name;
}
}
}
protected override void CreateEntitiesList()
{
base.CreateEntitiesList();
this.pEntities.Add("PROCEDURE_COLUMNS", new SharpQuerySchemaClassCollection());
this.pEntities.Add("PROCEDURE_PARAMETERS", new SharpQuerySchemaClassCollection());
}
public SharpQueryProcedure(IConnection connection, string catalogName, string schemaName, string ownerName, string name)
: base(connection, catalogName, schemaName, ownerName, name)
{
}
public override SharpQuerySchemaClassCollection GetSchemaParameters()
{
return this.pDataConnection.GetSchemaProcedureParameters(this);
}
public override SharpQuerySchemaClassCollection GetSchemaColumns()
{
return this.pDataConnection.GetSchemaProcedureColumns(this);
}
protected override void OnRefresh()
{
this.Entities["PROCEDURE_COLUMNS"].AddRange(this.GetSchemaColumns());
this.Entities["PROCEDURE_PARAMETERS"].AddRange(this.GetSchemaParameters());
}
///<summary>
/// For a Table or a View extract data.
/// For a stocked procedure, execute it :o).
/// <param name="rows">Number of row to extract. if "0", extract all rows.</param>
/// <returns><see cref="System.Data.DataTable">DataTable</see>
/// or a <see cref="System.Data.DataSet">DataSet</see> </returns>
/// </summary>
public override object Execute(int rows, SharpQuerySchemaClassCollection parameters)
{
return this.Connection.ExecuteProcedure(this, rows, parameters);
}
///<summary> return a <see cref="System.Windows.Forms.DataObject">DataObject</see>
///</summary>
public override DataObject DragObject
{
get
{
DataObject returnValue = new DataObject();
string extract = "EXECUTE " + NormalizedName;
returnValue.SetData(typeof(string), extract);
return returnValue;
}
}
}
///<summary>
/// Table class
///</summary>
public class SharpQueryTable : AbstractSharpQuerySchemaClass
{
public override string NormalizedName
{
get
{
if ((this.CatalogName != "") && (this.CatalogName != null))
{
return this.CatalogName + "." + this.Name;
}
else
{
return CheckWhiteSpace(this.Connection.GetProperty(AbstractSharpQueryConnectionWrapper.SharpQueryPropertyEnum.DataSource).ToString()) + "." + this.Name;
}
}
}
protected override void CreateEntitiesList()
{
base.CreateEntitiesList();
this.pEntities.Add("TABLE_COLUMNS", new SharpQuerySchemaClassCollection());
}
public SharpQueryTable(IConnection connection, string catalogName, string schemaName, string ownerName, string name)
: base(connection, catalogName, schemaName, ownerName, name)
{
}
public override SharpQuerySchemaClassCollection GetSchemaColumns()
{
return this.pDataConnection.GetSchemaTableColumns(this);
}
protected override void OnRefresh()
{
this.Entities["TABLE_COLUMNS"].AddRange(this.GetSchemaColumns());
}
///<summary>
/// For a Table or a View extract data.
/// For a stocked procedure, execute it :o).
/// <param name="rows">Number of row to extract. if "0", extract all rows.</param>
/// <returns><see cref="System.Data.DataTable">DataTable</see>
/// or a <see cref="System.Data.DataSet">DataSet</see> </returns>
/// </summary>
public override object Execute(int rows, SharpQuerySchemaClassCollection parameters)
{
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?