Бывают случаи, что имеются две одинаковых базы данных, одна на могущем сервере SQL, вторая на Microsoft Access. В ADO.NET имеется возможность, писать код, и не задумываться над тем, какой источник данных придется использовать в будущем,…, ну почти все так и есть, это все можно предусмотреть. Имеется база данных SQL по имени Test с одной таблицей по имени Table1, с Microsoft Access аналогично:

Так вот, в случае со строкой соединения воспользуемся интерфейсом IDbConnection, который позволяет наследующему классу реализовать класс Connection, который представляет собой уникальный сеанс с источником данных. Когда мы пишем:
SqlConnection con = new SqlConnection(...);
или
OleDbConnection con = new OleDbConnection (...);
то должны понимать, что оба эти классы реализуют интерфейс IDbConnection. Все также и с адаптерами. Интерфейс IDbDataAdapter представляет набор связанных с командой свойств, которые используются для заполнения DataSet и обновления источника данных, реализуемый поставщиками данных .NET Framework. Чтобы назначить команду Select для
адаптера нужно использовать интерфейс IDbCommand для команд. Вот собственно метод, который вернет наполненный DataSet, с которым мы потом можем творить все что прейдет в голову.
Если говорить про команды, то также:
public DataSet GetDate(IDbConnection con, IDbDataAdapter da)
{
// создаем комманду и назначаем ее интерфейсу IDbCommand
IDbCommand cmd = con.CreateCommand();
cmd.CommandText = "SELECT * FROM Table1";
// команда Select для адаптера
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);// наполняем датасет
// смотрим какой обьект Connection
if (con is SqlConnection)
MessageBox.Show("SQL Server");
else if (con is OleDbConnection)
MessageBox.Show("Microsoft Accses");
// возвращяем датасет
if (ds.Tables.Count != 0)
return ds;
return null;
}
Теперь перетягиваем на форму две кнопки, и один DataGridView. Вот обработчик события Click(…) для кнопки btn_sql:
private void btn_sql_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = null;
SqlConnection con =
new SqlConnection(
ConfigurationManager.ConnectionStrings
["TestConnectionSql"].ConnectionString
);
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = GetDate(con, da);
dataGridView1.DataSource = ds.Tables[0];
}
Здесь строка соединения считывается с файла App.config:
<connectionstrings>
<add name="TestConnectionSql"
providerName="System.Data.SqlClient"
connectionString=
"Data Source=Max-PC;
Initial Catalog=Test;
Integrated Security=true;" />
</connectionstrings>
Теперь обработчик события Click(…) для кнопки btn_oleDb:
private void btn_oleDb_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = null;
OleDbConnection con =
new OleDbConnection
("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Test.mdb");
OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = GetDate(con, da);
dataGridView1.DataSource = ds.Tables[0];
}
Запустив проект повится MessageBox с сообщением, в котором сказано, какого типа объект connection. После закрытия MessageBox:
