Руководство по работе с БД Firebird с использованием библиотеки ADO .Net 2.0


Работа с массивами


ADO .Net может работать с любыми типами данных. Для тех типов Ole Db, у которых нет прямого отображения на типы данных .Net, используется тип данных DBTYPE_VARIANT. Массивы относятся как раз к таким типам.

Следующий пример демонстрирует чтение и запись массива из 5 элементов:

public void ArrayReadWriteTest() { OleDbConnection con = ConnectionProvider.CreateConnection(); con.Open(); OleDbTransaction trans = con.BeginTransaction();

OleDbCommand cmd = new OleDbCommand( "select job_code, job_grade, job_country, job_title, language_req from job", con, trans);

OleDbCommand cmd_upd = new OleDbCommand( "update job set language_req=:language_reg where \n" + "job_code=:job_code and job_grade=:job_grade and job_country=:job_country", con, trans);

cmd_upd.Parameters.Add("language_req", OleDbType.Variant); cmd_upd.Parameters.Add("job_code", OleDbType.BSTR); cmd_upd.Parameters.Add("job_grade", OleDbType.BSTR); cmd_upd.Parameters.Add("job_country", OleDbType.BSTR);

using (OleDbDataReader rdr = cmd.ExecuteReader()) { while (rdr.Read()) { Console.WriteLine("JOB TITLE:" + rdr["job_title"].ToString());

//чтение массива

object lang_obj_arr = rdr["language_req"];

if (lang_obj_arr != DBNull.Value) { //преобразование к массиву

//используем Array.CreateInstance для создания массива

//из 5 элементов, с адресацией начиная с 1-го элемента, а не с 0 short arr_lower_bound = 1;

Array lang_str_arr = Array.CreateInstance(typeof(string), new int[] {5}, new int[] { arr_lower_bound });

//копирование элементов в массив ((Array)lang_obj_arr).CopyTo(lang_str_arr, arr_lower_bound);

for (int i = arr_lower_bound; i < lang_str_arr.Length + arr_lower_bound; i++) { //усечение символа \n на концах элементов массива

string trimmed_value = lang_str_arr.GetValue(i).ToString().Replace("\n", ""); lang_str_arr.SetValue(trimmed_value, i);

//вывод значения

if (lang_str_arr.GetValue(i).ToString() != "") Console.WriteLine(lang_str_arr.GetValue(i)); }




Начало  Назад  Вперед



Книжный магазин