В заметке рассматривается способ подключения к базе данных Oracle из кода C# и заполнение выбранными данными DataSet, который потом можно использовать в качестве источника данных для DataGridView в Windows Forms.
1. Предварительно необходимо установить на вашу систему Oracle ODAC(здесь качаем нужную версию), если есть желание использовать специализированные адаптеры для данных. Можно обойтись и без них - в этом случае нужно смотреть на примеры, подобные этому. Далее же рассматривается подклюение с помощью специальных библиотек.
2. В проекте в "Ссылки" добавляем System.Data.OracleClient.
3. Прописываем using System.Data.OracleClient;
Далее пример фрагмета кода для получения данных:
DataSet ds = new DataSet();
DataTable dt = newDataTable("QueryTable");
DataGridView DGW_QueryResult = new DataGridVIew();
using (OracleConnection connection = new OracleConnection(Static.Connection))
{
OracleCommand command = newOracleCommand(query);
command.Connection = connection;
try
{
connection.Open();
OracleDataReader reader = command.ExecuteReader();
ds.Tables.Add(dt);
ds.Load(reader, LoadOption.PreserveChanges, ds.Tables[0]);
DGW_QueryResult.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
//Обрабатываем
}
}
В данном примере мы загнали запрос из Oracle в DataSet напрямую. Однако, может понадобиться использовать объект reader в цикле.
В этом случае после заполнения объекта reader его можно прочитать следующим образом (в примере используется объект класса DBNames для примера.
while (reader.Read())
{
DBNames CurDB = new DBNames();
CurDB.DisplayName= reader.GetString(1);
CurDB.RealName = string.Format("{0}.{1}", reader.GetString(0), reader.GetString(1) );
db_names.Add(CurDB);
}
Данный код и библиотеки работают при использовании .NET Framework 3.5 SP1. К сожалению, System.Data.OracleClient для подключения к базе данных Oracle из C# .NET 4.0 отсутствует.
Тестировалось на версии Oracle 9i и выше. При использовании ODAC для подключения к базе Oracle 9-й версии, к сожалению, возможности использовать EntityFramework отсутствует. При использовании же Oracle ODAC 11-й версии применить EntityFramework в .NET возможно.
|