【发布时间】: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