📄 odbcfactory.cs
字号:
using System;
using System.Data;
using System.Data.Common;
#region 版权声明
///
/// 版权所有(C)2005,2006 作者:漆巧林。保留所有权利, davidqql@gmail.com, davidqql@hotmail.com
///
/// 作者不对本代码提供任何保证,因此,对于使用该代码带来的损害或者潜在的损害,作者不承担责任。
/// 在满足如下的条件下,你可以自由使用该代码:
/// 1. 非商业应用
/// 2. 保留本版权声明
/// 要进行商业应用,必须得到作者的书面许可。
/// 你可以修改和自由发布本代码,条件是保留前述的版权声明。
///
#endregion
namespace DataAccess
{
/// <summary>
/// OdbcFactory: ODBC具体工厂
/// </summary>
public class OdbcFactory : DbFactory
{
public OdbcFactory(){}
public override IDbConnection CreateConnection()
{
return new System.Data.Odbc.OdbcConnection();
}
public override IDbConnection CreateConnection(string connectionString)
{
return new System.Data.Odbc.OdbcConnection(connectionString);
}
public override IDbDataAdapter CreateAdapter()
{
return new System.Data.Odbc.OdbcDataAdapter();
}
public override IDbDataAdapter CreateAdapter(IDbCommand selectCommand)
{
return new System.Data.Odbc.OdbcDataAdapter((System.Data.Odbc.OdbcCommand)selectCommand);
}
public override IDbDataAdapter CreateAdapter(string selectCommandText, IDbConnection selectConnection)
{
return new System.Data.Odbc.OdbcDataAdapter(selectCommandText, (System.Data.Odbc.OdbcConnection)selectConnection);
}
public override IDbDataAdapter CreateAdapter(string selectCommandText, string selectConnectionString)
{
return new System.Data.Odbc.OdbcDataAdapter(selectCommandText, selectConnectionString);
}
public override IDbCommand CreateCommand()
{
return new System.Data.Odbc.OdbcCommand();
}
public override IDbCommand CreateCommand(string cmdText)
{
return new System.Data.Odbc.OdbcCommand(cmdText);
}
public override IDbCommand CreateCommand(string cmdText, IDbConnection connection)
{
return new System.Data.Odbc.OdbcCommand(cmdText, (System.Data.Odbc.OdbcConnection)connection);
}
public override IDbCommand CreateCommand(string cmdText, IDbConnection connection, IDbTransaction transaction)
{
return new System.Data.Odbc.OdbcCommand(cmdText, (System.Data.Odbc.OdbcConnection)connection, (System.Data.Odbc.OdbcTransaction)transaction);
}
public override DbCommandBuilder CreateCommandBuilder()
{
return new DataAccess.OdbcCommandBuilder();
}
public override DbCommandBuilder CreateCommandBuilder(IDbDataAdapter adapter)
{
return new DataAccess.OdbcCommandBuilder(adapter);
}
protected override void AppendItem(IDbCommand cmd, ConditionList.ConditionItem item, bool bFirst)
{
if(bFirst)
{
cmd.CommandText += " WHERE";
}
else
{
cmd.CommandText += " AND";
}
if(item.FieldValue is DBNull)
{
cmd.CommandText += String.Format(" {0} IS NULL", item.FieldName);
}
else
{
if(item.Relation == '%')
cmd.CommandText += String.Format(" {0} LIKE '%{1}%'", item.FieldName, item.FieldValue);
else
{
cmd.CommandText += String.Format(" {0} {1} ?", item.FieldName, item.Relation);
IDbDataParameter param = cmd.CreateParameter();
param.SourceColumn = item.FieldName;
param.Value = item.FieldValue;
cmd.Parameters.Add(param);
}
}
}
public override void AppendCommandCondition(IDbCommand cmd, string clause, string fieldName, String relation, object fieldValue)
{
IDbDataParameter param = cmd.CreateParameter();
param.SourceColumn = fieldName;
param.ParameterName = "p" + (nParam++);
param.Value = fieldValue;
cmd.CommandText += String.Format(" {0} {1} {2} ?", clause, fieldName, relation);
cmd.Parameters.Add(param);
}
public override IDbCommand CreateIdentityGetter(string tableName)
{
throw new ApplicationException("Function Not Implemented");
}
public override IDbInitiationHelper CreateInitiationHelper( IDbConnection connection )
{
return new OdbcInitiationHelper(connection);
}
public override IDbInitiationHelper CreateInitiationHelper( string connectionString )
{
return new OdbcInitiationHelper(connectionString);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -