我们如何才能使用一个对象同时使用sql和oracle数据库连接

时间:2014-11-21 09:12:21

标签: sql-server oracle ado.net

我想使用C ++ .Net从数据库中获取数据。无论系统中使用的是db,我都需要这样做。但我不想更改每个数据库的代码。我正在寻找C ++的解决方案.Net,请帮忙.. 这就是我现在所拥有的;

甲骨文:

OracleConnection *myOracleConnection; OracleDataAdapter * myDataAdapter; DataSet * myDataSet; myOracleConnection = new OracleConnection(S"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.175)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=SCDB)));User Id=user;Password=pw;"); myOracleConnection->Open(); myDataAdapter = new OracleDataAdapter(S"select dbms_xmlgen.getxml(' select * from SampleTable') from dual ",myOracleConnection); myDataSet = new DataSet("Sample");

SQL:

`SqlConnection      *mySQLConnection;
SqlDataAdapter * myDataAdapter;
DataSet * myDataSet;
mySQLConnection = new SqlConnection(S"Data Source=(local);Initial Catalog=myDb;User Id=user;Password=pw;");
    mySQLConnection->Open();
    myDataAdapter = new SqlDataAdapter(S"select * from [SampleTable]",mySQLConnection);
    myDataSet = new DataSet("Sample");`

我想使用一个连接对象进行两个连接。有没有想法实现这个???

1 个答案:

答案 0 :(得分:0)

我无法为您提供c ++代码,但我可以帮助您完成该操作。在一个连接中很难做到这一点,但你可以得到一个可以工作的DataSet,你只需要执行一次代码。

创建一个方法将返回一个DataSet,并传递查询以及应该使用什么类型的连接,在此方法中,根据您执行查询的游览连接类型并返回结果。

如果愿意,您还可以添加连接字符串。

这样的东西(虽然是c#)

    DataSet GetDataSet(string sqlQuery, ConnectionType connType)
    {
        DataSet dataset = new DataSet("aDataSet");
        using (DataTable table = dataset.Tables.Add("aDataTable"))
        {
            switch (connType)
            {
                case ConnectionType.MSSQL:
                    using (var conn = new SqlConnection("Data Source=(local);Initial Catalog=myDb;User Id=user;Password=pw"))
                    {
                        using (var cmd = new SqlCommand(sqlQuery, conn))
                        {
                            conn.Open();
                            using (var reader = cmd.ExecuteReader())
                            {
                                table.Load(reader);
                            }
                        }
                    }
                    break;
                case ConnectionType.Oracle:
                    using (var conn = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.175)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=SCDB)));User Id=user;Password=pw"))
                    {
                        using (var cmd = new OracleCommand(sqlQuery, conn))
                        {
                            conn.Open();
                            using (var reader = cmd.ExecuteReader())
                            {
                                table.Load(reader);
                            }
                        }
                    }
                    break;
                default:
                    break;
            }
        }
        return dataset;
    }

    enum ConnectionType { MSSQL, Oracle }