在创建共同DAL
以连接Sql Server
和Oracle
的过程中。在一些实现之后,如果OdbcConnection
可以用于连接到Database
,我最后会感到困惑,为什么需要SqlConnection
和OracleConnection
等特定实现。
接口
public interface IDatabaseFactory
{
DbConnection GetConnection();
DbCommand CreateCommand();
IDbParameter CreateParameter();
}
实现
public class SqlFactory : IDatabaseFactory
{
public DbConnection GetConnection(){ return new SqlConnection();}
public DbCommand CreateCommand(){ return new SqlCommand();}
public IDbParameter CreateParameter(){ return new SqlParameter();}
}
public class SqlFactory : IDatabaseFactory
{
public DbConnection GetConnection(){ return new OracleConnection();}
public DbCommand CreateCommand(){ return new OracleCommand();}
public IDbParameter CreateParameter(){ return new OracleParameter();}
}
答案 0 :(得分:2)
ODBC连接是一个非常通用的连接到数据库的提供程序。对于几乎每个数据库,您都可以找到ODBC驱动程序,即使对于简单的CSV文件也是如此。
由于缺点ODBC有一些限制(Hambone在他的答案中列出了一些),并且在许多情况下性能比本机驱动程序更差,因为ODBC在本机驱动程序之上添加了一个额外的层。也许在您的应用程序中,这种性能下降是不相关的。
答案 1 :(得分:1)
使用ODBC的优点:
缺点:/ ODBC的考虑因素:
with
子句RETURNING
子句,实现中可能会有一些差异(我在SQL Server中从未这样做过,所以这是部分推测)其他考虑因素:
:PARAM
并省略ParameterName
属性中的冒号,而SQL Server使用@PARAM
并包含ParameterName
属性中的at符号Transaction
添加一个属性