2014-11-21 68 views
0

我想使用C++。Net從數據庫中獲取數據。我需要這樣做,而不考慮系統中使用的數據庫。但我不想爲每個數據庫更改我的代碼。我正在尋找C++ .Net中的解決方案,請幫忙.. 這就是我現在所擁有的;我們如何才能使用sql和oracle數據庫連接只使用一個對象

甲骨文:

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");` 

我想做一個使用連接對象都連接。有沒有想法實現這一目標?

回答

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 } 
+0

感謝ü非常。我已經試過這個,我正在尋找其他更簡單的方法。 :) – shaheer 2014-11-21 12:09:53

+0

你能給我一個你想要的問題的例子嗎?使用DbConnection和DbCommand可能有另一種方法,因爲SqlConnetion和OracleConnection都從它繼承。 – Jaques 2014-11-21 12:45:19

+0

我正在尋找DbConnection和DbCommand的用法。我嘗試用這種DbConnection,DbConnection * conn; conn = new SqlConnection(S「Data Source =(local); Initial Catalog = myDb; User Id = user; Password = pw;」); conn->打開(); myDataAdapter = new SqlDataAdapter(S「select * from [LabOpsStatus]」,conn);但我得到一個錯誤「System :: Data :: SqlClient :: SqlDataAdapter :: SqlDataAdapter(System :: String __gc *,System :: String __gc *)':無法將參數2從'System :: Data :: Common: :DbConnection __gc *'到'System :: String __gc *'「 - – shaheer 2014-11-24 05:18:02

相關問題