powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataSet для разных источников данных
25 сообщений из 137, страница 1 из 6
DataSet для разных источников данных
    #39550448
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Уважаемый форум,

Вполне возможно, что вопрос идиотский, но увы.
Итак, есть два источника данных - две базы данных (SQL - сетевая база и SQL Compact - локальная база на клиентском компе).
В приложении необходимо организовать обмен данными между ними по нажатию кнопки. Локальная база привязана к приложению, а сетевая подключается при наличии интернета. Вопрос: можно ли использовать один датасет для обмена данными между базами? Если да, то почему после выполнения кода (заполнение таблиц в датасете из сетевой базы), эти таблицы не показываются в экплорере VS?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
        Dim Q_cmd As New SqlCommand, Q_connection As New SqlConnection("Data Source=ServerSQL;Initial Catalog=QA;Integrated Security=True")
        Dim Q_data_1 As New SqlDataAdapter("EXEC API_GetReportDataRowset '502','<params></params>'", Q_connection)
        Dim Q_data_2 As New SqlDataAdapter("EXEC API_GetReportDataRowset '503','<params></params>'", Q_connection)
        Dim Q_data_3 As New SqlDataAdapter("EXEC API_GetReportDataRowset '504','<params></params>'", Q_connection)
        Dim Q_data_4 As New SqlDataAdapter("EXEC API_ART_GetReportDataRowset 'RD_509','<params></params>'", Q_connection)
        Dim Q_dataset As New DataSet(), Q_1 As DataTable, Q_2 As DataTable, Q_3 As DataTable, Q_4 As DataTable

        Q_cmd.Connection = Q_connection
        Q_cmd.Connection.Open()
        Q_dataset.DataSetName = "test"

        Q_data_1.Fill(Q_dataset, "Q_1")
        Q_data_2.Fill(Q_dataset, "Q_2")
        Q_data_3.Fill(Q_dataset, "Q_3")
        Q_data_4.Fill(Q_dataset, "Q_4")

        Q_1 = Q_dataset.Tables("Q_1")
        Q_2 = Q_dataset.Tables("Q_2")
        Q_3 = Q_dataset.Tables("Q_3")
        Q_4 = Q_dataset.Tables("Q_4")


Ошибки не выдает, надо понимать так, что все правильно, но ни датасета "test", ни таблиц в существующем датасете, если его имя подставить в Q_dataset.DataSetName в эксплорере не видно. Что я делаю не так? (с)

Спасибо!
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39550487
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одном, если только по очереди. Но вам же самому удобнее иметь комплект на одну бд и комплект на другую.
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39550522
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Можно.
Что Вы там с ошибками делаете - не знаю
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39550523
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Petro123В одном, если только по очереди. Но вам же самому удобнее иметь комплект на одну бд и комплект на другую.
ДатаСет - это локальная модель. Можно вообще без баз данных использовать
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39550525
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Petro123В одном, если только по очереди. Но вам же самому удобнее иметь комплект на одну бд и комплект на другую.
ДатаСет - это локальная модель. Можно вообще без баз данных использовать
Наполняется из базы?
Зачем ему третья база из локальной.
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39550916
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Cat2, интересно, как тогда хранить данные, если датасет существует только в оперативке?
Локальная база используется, если нет соединения с интернетом. Оттуда данные нужно перегнать в сетевую базу.
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39550922
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Petro123, что по очереди? Не совсем понятно. Если я правильно догадываюсь, один датасет должен содержать таблицы из одного источника и из другого. Вопрос: как это сделать? У меня не получилось, поэтому и спрашиваю.

Если иметь два датасета - по одному для каждого источника, то это удобнее, вы правы. Но как организовать переброску данных из одного в другой? Я не совсем понимаю, можно примерчик?

Спасибо!
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39550926
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
IFKCat2, интересно, как тогда хранить данные, если датасет существует только в оперативке?
Локальная база используется, если нет соединения с интернетом. Оттуда данные нужно перегнать в сетевую базу.
Ну и перегоните, какие проблемы?
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39550928
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Cat2, проблем нет, если знать как. :) Я - не знаю, поэтому и спрашиваю.
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39550933
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
IFKУ меня не получилось, поэтому и спрашиваю.
Честно говоря глядя на приведенный Вами код я не уверен, что ЭТО вообще работать будет .

Если таблицы из двух баз заполняются , то должно быть два Connection
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39550938
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Без проверки, навскидку. И это не образец для подражания, а просто один из вариантов!!!

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
DataSet ds = new DataSet();
DataTable dt0 = new DataTable();
DataTable dt1 = new DataTable();
ds.TablesAdd(dt0);
ds.TablesAdd(dt1);
SqlConnection con0 = new SqlConnection("...");
SqlConnection con1 = new SqlConnection("...");
SqlCommand sql0 = new SqlCommand ("...", con0);
SqlCommand sql1 = new SqlCommand ("...", con1);

SqlDataAdapter da0 = new SqlDataAdapter();
SqlDataAdapter da1 = new SqlDataAdapter();

da0.SecectCommand = sql0 ;
da1.SecectCommand = sql1 ;

da0.Fill(dt0);
da1.Fill(dt1);
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39550942
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Cat2, угу, что-то подобное я как раз пробую:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
        Dim Q_cmd As New SqlCommand, Q_connection As New SqlConnection("Data Source=server01;Initial Catalog= QA;Integrated Security=True")
        Dim Q_data_Users As New SqlDataAdapter("EXEC API '504','<params></params>'", Q_connection)
        Dim Q_dataset As New DataSet("test"), Q_Users As DataTable

        Q_cmd.Connection = Q_connection
        Q_cmd.Connection.Open()

        Q_data_Users.Fill(Q_dataset, "Q_Users")
        Q_Users = Q_dataset.Tables("Q_Users")

        Dim SqlCeCommand As New SqlServerCe.SqlCeCommand, SQLCe_connection As New SqlServerCe.SqlCeConnection("Data Source=localcomp\localDB.sdf;Persist Security Info=False")
        Dim GS_data As New SqlServerCe.SqlCeDataAdapter("SELECT * FROM GS_data", SQLCe_connection), GS_data_loaded As DataTable

        GS_data.Fill(Q_dataset, "GS_data_loaded")
        GS_data_loaded = Q_dataset.Tables("GS_data_loaded")



Теперь вопрос: как проверить, что это сработало? В эксплорере источников данных я никакого датасета с именем "test" не вижу. Так должно быть?
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39550964
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFKCat2, интересно, как тогда хранить данные, если датасет существует только в оперативке?
Локальная база используется, если нет соединения с интернетом. Оттуда данные нужно перегнать в сетевую базу.
Код: c#
1.
2.
ds.WriteXml("bebe.xml");
ds.ReadXml("bebe.xml");
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39550982
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
fortibransa, и какая разница, в XML или в локальной базе?
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39550988
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFK,
1. Делаете на кнопку выброс в лог из обоих баз информацию (два connection и два датасета к ним как вариант).
2. Пробуете из одной не в лог а во вторую базу.
Всё.
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39551005
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Petro123, и как вы себе это представляете? Я не совсем понимаю, как это осуществить. :(
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39551008
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сомнительный способ, хотели как лучше, а получилось как всегда.
это только на 1 взгляд кажется "проще и удобнее", а на деле вы уже сейчас страдаете.
если нужно сделать экспорт\импорт из 1 базы в другую, что мешает просто читать таблицу и делать bulk insert как все нормальные люди?
а если таблица будет не 2 кб, а 4 гб? всё грузить в память, а потом в базу?
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39551013
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFKPetro123, и как вы себе это представляете? Я не совсем понимаю, как это осуществить. :(
Я предлагаю по шагам, без всякой оптимищации.
Не умеем на экран писать табличку?
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39551019
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Roman Mejtes, угу, но это хорошо если трансфер данных односторонний, например из сетевой базы с локальную. А мне нужно еще и в другую сторону, когда локальные данные в сетевую базу должны ехать. Причем, bulk не получится - потрется все.
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39551020
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Petro123, вот тут не совсем понятно, что вы имели в виду => "2. Пробуете из одной не в лог а во вторую базу."
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39551030
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFK,
Я не знаю, что вы умеете, а что нет.
Через клиента это в цикле переписывать в переменные и потом вставлять в ДатаСет2 или insert
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39551051
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Petro123, это как раз понятно. Я использую массивы для этого. Непонятно, почему не добавляются таблицы в датасет, когда я их добавляю программно из разных источников. Вернее, эти таблицы не видны в студии в разделе "Источники данных". Если создавать новый датасет программно, используя два соединения и т.д., то его тоже не видно в студии. Я понимаю, что может быть вариант "Ты суслика видишь? Нет. И я нет, а он есть.", но хотелось бы прояснить этот момент.

Второй момент был об оптимизации задачи перекачки данных из одного источника в другой (из локальной базы в сиквел и наоборот). Варианты:
- один общий датасет и переливание между таблицами
- два датасета и переливание между ними. Здесь не все понятно, как именно это сделать. Я бы использовал массивы, но не уверен, что нет пути проще и быстрее.
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39551064
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFK,
Не создавай программно.
2. Оптимизация это не через клиент, а как вариант - репликация.
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39551072
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Petro123, К сожалению, сетевая база не в моем распоряжении и доступ к ней возможен только через непрозрачные ХП - чисто вытащить результирующий набор данных. Заливка обратно тоже через ХП.

Если бы я мог напрямую связать сетевую базы - я бы вообще этот вопрос не поднимал.
...
Рейтинг: 0 / 0
DataSet для разных источников данных
    #39551087
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFK,
Если не дают, зачем извращатся?
Ты же про оптимизацию спросил.
Удачи!
...
Рейтинг: 0 / 0
25 сообщений из 137, страница 1 из 6
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataSet для разных источников данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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