【问题标题】:Executing commands using DbCommand in c#在 C# 中使用 DbCommand 执行命令
【发布时间】:2016-07-05 16:23:13
【问题描述】:

好的,我使用了 DbClass,因此我可以同时使用 Oracle 和 sql,而无需使用 2 个不同的 dill,我只需传递连接和提供程序就可以了。 这就是我打开连接的方式:

public class CdpsiUpdateSql : IDisposable
{        
    private DbTransaction _myTransaction;
    bool disposed = false;
    SafeHandle handle = new SafeFileHandle(IntPtr.Zero, true);
    public DbConnection OraConnection { get; set; }

    public CdpsiUpdateSql(string Provider, string connectionString)
    {
        //this.OraConnection = OpenDbConnection(connectionString);
        string constr = connectionString;

            DbProviderFactory factory =
                    DbProviderFactories.GetFactory(Provider);
        DbConnection conn = factory.CreateConnection();
        conn.ConnectionString = constr;
        conn.Open();
        this.OraConnection = conn;

    }

但现在我需要使用该连接 (OraConnection) 执行几个命令,我有另一个执行命令的 DLL,并且我有这个函数:

private bool ExecComando(string comando, CdpsiUpdateSql Updater, string log)
{
    Database db = DatabaseFactory.CreateDatabase();
    string sql = comando;
    DbCommand cmd = db.GetSqlStringCommand(sql);
    cmd.Connection = Updater.OraConnection;
    try
    {
        linhas = cmd.ExecuteNonQuery();
        return false;
    }
    catch (DbException exp)
    {
        Logg("Erro a executar o comando: " + comando, log);
        Logg("Descrição do erro: " + exp.ToString(), log);
        cmd.Dispose();
        return true;
    }
}

它抛出一个异常,要求设置一个需要配置文件的 DatabaseProviderFactory。 我找不到任何结论性的东西,因为这门课的信息真的很稀少。 如果在测试时有任何相关性,我使用了提供程序 >"Oracle.ManagedDataAccess.Client" 并且使用第一种方法的连接工作得很好,它连接成功。 我需要使用什么来执行命令? 感谢您的帮助,非常感谢您

【问题讨论】:

    标签: c# sql sql-server database oracle


    【解决方案1】:

    在我看来,您根本不需要 DatabaseFactory 课程。

    我认为您可以使用DbConnection 类的CreateCommand 方法。比如:

    var cmd = Updater.OraConnection.CreateCommand();
    cmd.CommandText = sql;
    ...
    

    我认为使用私有 setter 声明连接会更好。

    public DbConnection OraConnection { get; private set; }
    

    更加优雅和安全。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 2021-10-26
      • 1970-01-01
      相关资源
      最近更新 更多