2010-03-09 41 views
2

我想根據條件使用mysqlconnection,command和datareader或sqlconnection命令和datareader。我想用相同的變量兩種類型的連接MySQL DataCOnnection和ADO.NET

恩:

Currently i have 
dim _c as New mySqlConnection() 
dim _cmd as New mysqlCommand() 
dim _reader as New mysqlreader() 

_reader = _cmd.executereader() 
'loop through _reader 
----------------- 

我怎樣才能改變前三根據選擇的情況下使用SQL/MySQL的。這可能嗎?

+0

由於你的定義在CASE甚至是IF/THEN中的「範圍」,你*可以*使用相同的變量名重複定義......但是在編譯器將會抱怨它沒有被定義。你當然可以不創建具有相同名稱但具有不同屬性的定義。 您應該創建一個dbclass/db_module/db_subroutine,它可以回傳這兩種類型的reader-rows。但是這些工作將隱藏在dbclass中。 – tobrien 2010-03-09 18:12:12

回答

4

是的,這是可能的。 ADO.NET有一個提供者API。你必須這樣做:

string providerName; 

if (true/*add your logic here*/) 
    providerName = "System.Data.SqlClient"; 
else 
    providerName = "MySql.Data.MySqlClient" 

DbProviderFactory factory = DbProviderFactories.GetFactory(providerName); 

DbConnection connection = factory.CreateConnection(); 
DbCommand command = factory.CreateCommand(); 

// ... and so on 
0

編寫一個返回datareader的方法。無論您用於構建查詢的條件如何,將您的選擇案例放在方法中,數據讀取器將被返回。

確保在完成後關閉數據閱讀器。