Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / IDbDataAdapter и несколько таблиц в Dataset / 10 сообщений из 10, страница 1 из 1
05.12.2014, 09:09
    #38825710
Алексей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDbDataAdapter и несколько таблиц в Dataset
всем доброго времени суток

Подскажите пожалуйста можно ли используя IDbDataAdapter залить в Dataset несколько таблиц?
...
Рейтинг: 0 / 0
05.12.2014, 12:53
    #38826106
JeStone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDbDataAdapter и несколько таблиц в Dataset
Алексей,
Можно
...
Рейтинг: 0 / 0
05.12.2014, 14:14
    #38826254
Алексей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDbDataAdapter и несколько таблиц в Dataset
JeStone,

как? можно пример? или где посмотреть?
...
Рейтинг: 0 / 0
05.12.2014, 14:43
    #38826288
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDbDataAdapter и несколько таблиц в Dataset
Алексей,

раз и два
...
Рейтинг: 0 / 0
05.12.2014, 14:49
    #38826299
Алексей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDbDataAdapter и несколько таблиц в Dataset
Axeleron,

Спасибо за ссылки, с объектами проблем нет. Как выполнить метод Fill(datasetname,tablename) с интерфейсе IDbDataAdapter? Там можно передать только Dataset в качестве аргумента. В связи с этим и возник описанный выше вопрос....
...
Рейтинг: 0 / 0
05.12.2014, 15:36
    #38826357
JeStone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDbDataAdapter и несколько таблиц в Dataset
АлексейAxeleron,

Спасибо за ссылки, с объектами проблем нет. Как выполнить метод Fill(datasetname,tablename) с интерфейсе IDbDataAdapter? Там можно передать только Dataset в качестве аргумента. В связи с этим и возник описанный выше вопрос....
А привести интерфейс к реализующему его классу не вариант? Ну или хотя бы к обобщенному классу DbDataAdapter?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
        private DbProviderFactory Factory = null;
        private string ProviderName = "ODBC";
        private string ConnectionString = "...";
        
        public void AnyMethodPublic()
        {
            Factory = System.Data.Common.DbProviderFactories.GetFactory(ParseProviderName(ProviderName));
            DbDataAdapter adapter = Factory.CreateDataAdapter();
            DataSet ds = AnyMethodPrivate(adapter);
        }
      
        private DataSet AnyMethodPrivate(IDbDataAdapter adapter)
        {
            DataSet ds = new DataSet();
            using (DbConnection connection = Factory.CreateConnection())
            {
                connection.ConnectionString = ConnectionString;
                try
                {
                    connection.Open();
                    using (DbCommand command1 = Factory.CreateCommand())
                    {
                        command1.Connection = connection;
                        command1.CommandText = "SELECT * FROM one";
                        adapter.SelectCommand = command1;

                        (adapter as DbDataAdapter).Fill(ds, "one");
                    }
                    using (DbCommand command2 = Factory.CreateCommand())
                    {
                        command2.Connection = connection;
                        command2.CommandText = "SELECT * FROM two";
                        adapter.SelectCommand = command2;
                        (adapter as DbDataAdapter).Fill(ds, "two");
                    }
                    return ds;
                }
                catch (DbException)
                {
                    return null;
                }
            }
        }

        private static string ParseProviderName(string name)
        {
            DataTable dt = DbProviderFactories.GetFactoryClasses();
            List<string> providers = new List<string>();
            foreach (DataRow row in dt.Rows)
            {
                providers.Add(row["InvariantName"].ToString());
            }
            foreach (string provider in providers)
            {
                if (Regex.IsMatch(provider, name, RegexOptions.IgnoreCase))
                    return provider;
            }
            throw new ApplicationException(String.Format("Провайдер {0} не найден", name));
        }
...
Рейтинг: 0 / 0
05.12.2014, 16:16
    #38826415
Алексей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDbDataAdapter и несколько таблиц в Dataset
JeStone,
Да, спасибо.
Но вот вопрос :

List<IDbDataAdapter> lda = new List<IDbDataAdapter>;

DataSet Dts = new DataSet();

IDbDataAdapter ida1 = new SqlDataAdapter();
//манипуляции с ним
//......
lda.Add(ida1);

IDbDataAdapter oda = new OleDbDataAdapter();
//аналогично

lda.Add(oda);

//Далее допустим

foreach (IDbDataAdapter item in lda)
{
item.fill(dTs); // как здесь поступить?
}
...
Рейтинг: 0 / 0
05.12.2014, 16:17
    #38826417
Алексей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDbDataAdapter и несколько таблиц в Dataset
JeStone,
Да, спасибо.
Но вот вопрос :


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
List<IDbDataAdapter> lda = new List<IDbDataAdapter>;

DataSet Dts = new DataSet();

IDbDataAdapter ida1 = new SqlDataAdapter();
//манипуляции с ним
//......
lda.Add(ida1);

IDbDataAdapter oda = new OleDbDataAdapter();
//аналогично

lda.Add(oda);

//Далее допустим

foreach (IDbDataAdapter item in lda)
{
item.fill(dTs); // как здесь поступить?  не хотелось бы определять тип.....
} 
...
Рейтинг: 0 / 0
05.12.2014, 16:30
    #38826440
JeStone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDbDataAdapter и несколько таблиц в Dataset
Код: c#
1.
public sealed class OleDbDataAdapter : DbDataAdapter, IDbDataAdapter, IDataAdapter, ICloneable


Код: c#
1.
public sealed class SqlDataAdapter : DbDataAdapter, IDbDataAdapter, IDataAdapter, ICloneable


DbDataAdapter
JeStoneА привести интерфейс к ... обобщенному классу DbDataAdapter?
...
Рейтинг: 0 / 0
05.12.2014, 16:41
    #38826453
Алексей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IDbDataAdapter и несколько таблиц в Dataset
JeStone,

Да, извиняюсь,
(item as DbDataAdapter).Fill(dTs,"SomeTable");
спасает положение

За сим тему закрываю.

Огромное спасибо JeStone
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / IDbDataAdapter и несколько таблиц в Dataset / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]