📄 commandbuilder.cs
字号:
using System;
using System.Data;
using System.Data.Common;
using System.ComponentModel;
using System.Collections;
#region 版权声明
///
/// 版权所有(C)2005,2006 作者:漆巧林。保留所有权利, davidqql@gmail.com, davidqql@hotmail.com
///
/// 作者不对本代码提供任何保证,因此,对于使用该代码带来的损害或者潜在的损害,作者不承担责任。
/// 在满足如下的条件下,你可以自由使用该代码:
/// 1. 非商业应用
/// 2. 保留本版权声明
/// 要进行商业应用,必须得到作者的书面许可。
/// 你可以修改和自由发布本代码,条件是保留前述的版权声明。
///
#endregion
namespace DataAccess
{
/// <summary>
/// ICommandBuilder : 命令生成器的公共接口,用来解决各种数据库不兼容的CommandBuilder类型。
/// </summary>
public abstract class DbCommandBuilder : System.ComponentModel.Component
{
/// <summary>
/// 获取或者设置CommandBuilder的适配器
/// </summary>
public abstract IDbDataAdapter DataAdapter { get; set; }
/// <summary>
/// 获取或设置开始字符,这些字符在使用名称中包含空格或保留标记等字符的数据库对象(例如,表或列)时使用。
/// </summary>
public abstract string QuotePrefix { set; get; }
/// <summary>
/// 获取或设置结束字符,这些字符在使用名称中包含空格或保留标记等字符的数据库对象(例如,表或列)时使用。
/// </summary>
public abstract string QuoteSuffix { set; get; }
/// <summary>
/// 从在 command 中指定的存储过程中检索参数信息并填充指定的 command 对象的 Parameters 集合。
/// </summary>
/// <param name="command"></param>
public abstract void DeriveParameters(IDbCommand command);
/// <summary>
/// 获取在数据源中执行删除操作所需的自动生成的 IDbCommand 接口
/// </summary>
/// <returns>自动生成的、执行删除操作所需的IDbCommand接口</returns>
public abstract IDbCommand GetDeleteCommand();
/// <summary>
/// 获取在数据源中执行插入操作所需的自动生成的 IDbCommand 接口。
/// </summary>
/// <returns>自动生成的、执行插入操作所需的 IDbCommand 接口</returns>
public abstract IDbCommand GetInsertCommand();
/// <summary>
/// 获取在数据源中执行更新操作所需的自动生成的 IDbCommand 接口。
/// </summary>
/// <returns>自动生成的、执行更新操作所需的 IDbCommand 接口</returns>
public abstract IDbCommand GetUpdateCommand();
/// <summary>
/// 刷新用于生成 INSERT、UPDATE 或 DELETE 语句的数据库架构信息。
/// </summary>
public abstract void RefreshSchema();
}
/// <summary>
/// SqlCommandBuilder : 对System.Data.SqlClient.SqlCommandBuilder的封装
/// </summary>
internal sealed class SqlCommandBuilder : DbCommandBuilder
{
private System.Data.SqlClient.SqlCommandBuilder builder;
internal SqlCommandBuilder()
{
builder = new System.Data.SqlClient.SqlCommandBuilder();
}
internal SqlCommandBuilder(IDbDataAdapter adapter)
{
builder = new System.Data.SqlClient.SqlCommandBuilder((System.Data.SqlClient.SqlDataAdapter)adapter);
}
public override IDbDataAdapter DataAdapter
{
get
{
return builder.DataAdapter;
}
set
{
builder.DataAdapter = (System.Data.SqlClient.SqlDataAdapter)value;
}
}
public override void DeriveParameters(IDbCommand command)
{
System.Data.SqlClient.SqlCommandBuilder.DeriveParameters((System.Data.SqlClient.SqlCommand)command);
}
public override IDbCommand GetDeleteCommand()
{
return builder.GetDeleteCommand();
}
public override IDbCommand GetInsertCommand()
{
return builder.GetInsertCommand();
}
public override IDbCommand GetUpdateCommand()
{
return builder.GetUpdateCommand();
}
public override string QuotePrefix
{
get
{
return builder.QuotePrefix;
}
set
{
builder.QuotePrefix = value;
}
}
public override string QuoteSuffix
{
get
{
return builder.QuoteSuffix;
}
set
{
builder.QuoteSuffix = value;
}
}
public override void RefreshSchema()
{
builder.RefreshSchema();
}
}
/// <summary>
/// OdbcCommandBuilder: System.Data.Odbc.OdbcCommandBuilder的封装类
/// </summary>
internal sealed class OdbcCommandBuilder : DbCommandBuilder
{
private System.Data.Odbc.OdbcCommandBuilder builder;
internal OdbcCommandBuilder()
{
builder = new System.Data.Odbc.OdbcCommandBuilder();
}
internal OdbcCommandBuilder(IDbDataAdapter adapter)
{
builder = new System.Data.Odbc.OdbcCommandBuilder((System.Data.Odbc.OdbcDataAdapter)adapter);
}
public override IDbDataAdapter DataAdapter
{
get
{
return builder.DataAdapter;
}
set
{
builder.DataAdapter = (System.Data.Odbc.OdbcDataAdapter)value;
}
}
public override void DeriveParameters(IDbCommand command)
{
System.Data.Odbc.OdbcCommandBuilder.DeriveParameters((System.Data.Odbc.OdbcCommand)command);
}
public override IDbCommand GetDeleteCommand()
{
return builder.GetDeleteCommand();
}
public override IDbCommand GetInsertCommand()
{
return builder.GetInsertCommand();
}
public override IDbCommand GetUpdateCommand()
{
return builder.GetUpdateCommand();
}
public override string QuotePrefix
{
get
{
return builder.QuotePrefix;
}
set
{
builder.QuotePrefix = value;
}
}
public override string QuoteSuffix
{
get
{
return builder.QuoteSuffix;
}
set
{
builder.QuoteSuffix = value;
}
}
public override void RefreshSchema()
{
builder.RefreshSchema();
}
}
/// <summary>
/// OleDbCommandBuilder: System.Data.OleDb.OleDbCommandBuilder的封装类
/// </summary>
internal sealed class OleDbCommandBuilder : DbCommandBuilder
{
private System.Data.OleDb.OleDbCommandBuilder builder;
internal OleDbCommandBuilder()
{
builder = new System.Data.OleDb.OleDbCommandBuilder();
}
internal OleDbCommandBuilder(IDbDataAdapter adapter)
{
builder = new System.Data.OleDb.OleDbCommandBuilder((System.Data.OleDb.OleDbDataAdapter)adapter);
}
public override IDbDataAdapter DataAdapter
{
get
{
return builder.DataAdapter;
}
set
{
builder.DataAdapter = (System.Data.OleDb.OleDbDataAdapter)value;
}
}
public override void DeriveParameters(IDbCommand command)
{
System.Data.OleDb.OleDbCommandBuilder.DeriveParameters((System.Data.OleDb.OleDbCommand)command);
}
public override IDbCommand GetDeleteCommand()
{
return builder.GetDeleteCommand();
}
public override IDbCommand GetInsertCommand()
{
return builder.GetInsertCommand();
}
public override IDbCommand GetUpdateCommand()
{
return builder.GetUpdateCommand();
}
public override string QuotePrefix
{
get
{
return builder.QuotePrefix;
}
set
{
builder.QuotePrefix = value;
}
}
public override string QuoteSuffix
{
get
{
return builder.QuoteSuffix;
}
set
{
builder.QuoteSuffix = value;
}
}
public override void RefreshSchema()
{
builder.RefreshSchema();
}
}
/// <summary>
/// OracleCommandBuilder: System.Data.OracleClient.OracleCommandBuilder的封装类
/// </summary>
internal sealed class OracleCommandBuilder : DbCommandBuilder
{
private System.Data.OracleClient.OracleCommandBuilder builder;
internal OracleCommandBuilder()
{
builder = new System.Data.OracleClient.OracleCommandBuilder();
}
internal OracleCommandBuilder(IDbDataAdapter adapter)
{
builder = new System.Data.OracleClient.OracleCommandBuilder((System.Data.OracleClient.OracleDataAdapter)adapter);
}
public override IDbDataAdapter DataAdapter
{
get
{
return builder.DataAdapter;
}
set
{
builder.DataAdapter = (System.Data.OracleClient.OracleDataAdapter)value;
}
}
public override void DeriveParameters(IDbCommand command)
{
System.Data.OracleClient.OracleCommandBuilder.DeriveParameters((System.Data.OracleClient.OracleCommand)command);
}
public override IDbCommand GetDeleteCommand()
{
return builder.GetDeleteCommand();
}
public override IDbCommand GetInsertCommand()
{
return builder.GetInsertCommand();
}
public override IDbCommand GetUpdateCommand()
{
return builder.GetUpdateCommand();
}
public override string QuotePrefix
{
get
{
return builder.QuotePrefix;
}
set
{
builder.QuotePrefix = value;
}
}
public override string QuoteSuffix
{
get
{
return builder.QuoteSuffix;
}
set
{
builder.QuoteSuffix = value;
}
}
public override void RefreshSchema()
{
builder.RefreshSchema();
}
}
/// <summary>
/// NpgsqlCommandBuilder: 对于Npgsql.NpgsqlCommandBuilder封装
/// </summary>
internal sealed class NpgsqlCommandBuilder : DbCommandBuilder
{
private Npgsql.NpgsqlCommandBuilder builder;
internal NpgsqlCommandBuilder()
{
builder = new Npgsql.NpgsqlCommandBuilder();
}
internal NpgsqlCommandBuilder(IDbDataAdapter adapter)
{
builder = new Npgsql.NpgsqlCommandBuilder((Npgsql.NpgsqlDataAdapter)adapter);
}
public override IDbDataAdapter DataAdapter
{
get
{
return builder.DataAdapter;
}
set
{
builder.DataAdapter = (Npgsql.NpgsqlDataAdapter)value;
}
}
public override void DeriveParameters(IDbCommand command)
{
Npgsql.NpgsqlCommandBuilder.DeriveParameters((Npgsql.NpgsqlCommand)command);
}
public override IDbCommand GetDeleteCommand()
{
return builder.GetDeleteCommand(null);
}
public override IDbCommand GetInsertCommand()
{
return builder.GetInsertCommand(null);
}
public override IDbCommand GetUpdateCommand()
{
return builder.GetUpdateCommand(null);
}
public override string QuotePrefix
{
get
{
return builder.QuotePrefix;
}
set
{
builder.QuotePrefix = value;
}
}
public override string QuoteSuffix
{
get
{
return builder.QuoteSuffix;
}
set
{
builder.QuoteSuffix = value;
}
}
public override void RefreshSchema()
{
builder.RefreshSchema();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -