Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/26: Рейтинг темы: голосов - 26, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 25.05.2012
Сообщений: 145

Как в один DataSet загрузить 2 разные таблицы

25.05.2012, 02:16. Показов 4978. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите, почему такое не прокатывает:
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
        private MySqlConnection connection;
 
        private DataSet DS;
 
 
        private MySqlDataAdapter adapter1;
        private MySqlDataAdapter adapter2;
        private void Form1_Load(object sender, EventArgs e)
        {
            connection = new MySqlConnection("Database=testthreetables;Data Source = localhost; User Id=root;Password=x1x2x3x4x5");
 
            DS = new DataSet();
 
 
            adapter1 = new MySqlDataAdapter("SELECT * FROM Persons", connection);
 
            adapter1.InsertCommand.Parameters.Add("Person", MySqlDbType.VarChar, 45);
            adapter1.InsertCommand = new MySqlCommand("Insert INTO Persons (Person) VALUES(@Person)");
 
            
            adapter2 = new MySqlDataAdapter("SELECT * FROM Companies", connection);
 
            adapter2.InsertCommand.Parameters.Add("Company", MySqlDbType.VarChar, 250);
            adapter2.InsertCommand = new MySqlCommand("Insert INTO Companies (Company) VALUES(@Company)");
 
            
 
            
            adapter2.Fill(DS);
 
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
 
 
            adapter1.Fill(DS, "Persons");
            DataTable DT1 = DS.Tables["Persons"];
            listBox1.Items.Clear();           
 
            foreach (DataRow DR in DT1.Rows)
                listBox1.Items.Add(DR[0]);
 
           
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            adapter2.Fill(DS, "Companies");// ИСКЛЮЧЕНИЕ ТУТ!
            DataTable DT2 = DS.Tables["Companies"];
            listBox2.Items.Clear();
 
            foreach (DataRow DR in DT2.Rows)
                listBox2.Items.Add(DR[0]);
        }
Это попытка в 1 объект DataSet-a залить 2 разные таблицы, при нажатии кнопок выдает исключения "Ссылка на объект не указывает на экземпляр объекта." Как сделать правильно?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.05.2012, 02:16
Ответы с готовыми решениями:

Как загрузить в DataSet все таблицы базы данных?
Не пойму как загрузить данные из всех таблиц в датасет. Во всех примерах при создании SqlDataAdapter указывается запрос на выборку из одной...

Как в DataSet загрузить данные из XML
Я хочу из Xml файла создать DataSet как это можно реализовать, если это возможно? Жду совета, Спасибо! <?xml...

Передача данных из таблицы одной dataSet в таблицу другой dataSet
Здравствуйте. У меня возникла ситуация когда необходимо передать данные из таблицы одной dataset в таблицу другой dataset, которая хранит...

4
 Аватар для Vladilena
7 / 7 / 1
Регистрация: 11.05.2012
Сообщений: 51
25.05.2012, 02:24
Я полагаю, это происходит потому, что ты не присвоил пераметру @Person и аналогичному параметру другой таблицы какое-либо значение.

C#
1
 @Person.Value = "какое-то значение"
0
0 / 0 / 0
Регистрация: 25.05.2012
Сообщений: 145
25.05.2012, 02:35  [ТС]
до параметров не доходит, я их пока еще неиспользую, смотри вот такой код, тоже самое!

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
        private MySqlConnection connection;
 
        private DataSet DS;
 
 
        private MySqlDataAdapter adapter1;
        private MySqlDataAdapter adapter2;
        private void Form1_Load(object sender, EventArgs e)
        {
            connection = new MySqlConnection("Database=testthreetables;Data Source = localhost; User Id=root;Password=x1x2x3x4x5");
 
            DS = new DataSet();
 
            adapter1 = new MySqlDataAdapter("SELECT * FROM Persons", connection);
            adapter2 = new MySqlDataAdapter("SELECT * FROM Companies", connection);
 
 
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
 
 
            adapter1.Fill(DS, "Persons");
            DataTable DT1 = DS.Tables["Persons"];
            listBox1.Items.Clear();           
 
            foreach (DataRow DR in DT1.Rows)
                listBox1.Items.Add(DR[0]);
 
           
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            adapter2.Fill(DS, "Companies");// ИСКЛЮЧЕНИЕ ТУТ!
            DataTable DT2 = DS.Tables["Companies"];
            listBox2.Items.Clear();
 
            foreach (DataRow DR in DT2.Rows)
                listBox2.Items.Add(DR[0]);
        }
UPD стоп я был неправ, без параметров сработало, как здесь параметры влияют??? адаптеры то разные, почему они на друг друга влияют?

Добавлено через 6 минут
а вот так сработало, странно блин)

C#
1
2
3
4
5
6
7
8
            adapter1.InsertCommand = new MySqlCommand("Insert INTO Persons (Person) VALUES(@Person)");
            adapter1.InsertCommand.Parameters.Add("Person", MySqlDbType.VarChar, 45);
            
            adapter2 = new MySqlDataAdapter("SELECT * FROM Companies", connection);
 
 
            adapter2.InsertCommand = new MySqlCommand("Insert INTO Companies (Company) VALUES(@Company)");
            adapter2.InsertCommand.Parameters.Add("Company", MySqlDbType.VarChar, 250);
0
 Аватар для Vladilena
7 / 7 / 1
Регистрация: 11.05.2012
Сообщений: 51
25.05.2012, 02:49
Я честно говоря никогда не создавала программно адаптеры, предпочитаю, чтобы за меня это студия делала

В твоем коде мне показалось ошибкой то, что команда без явно указанного значения для вставки расположена в коде загрузки формы. Как мне кажется, она должна была ругаться еще на этапе загрузки....

Чтобы вставить данные в таблицу, я использую такоей код:

Добавлено через 53 секунды
C#
1
2
3
4
5
6
7
SqlConnection a = new SqlConnection(GlobalTrash._connect); // строка формирования соединения
            using (a)
            {
                SqlDataAdapter fileAdapt = new SqlDataAdapter(@"SELECT  * FROM AddFiles", a);
 
                fileAdapt.InsertCommand = new SqlCommand(@"INSERT INTO [AddFiles] ( [FileDirectory], [id_interaction]) 
                                                                VALUES      ( @FileDirectory, @id_interaction)", a);
Добавлено через 24 секунды
[CSHARP] SqlParameter workParam;

//для вставки приложенных файлов
// параметр для столбца FileDirectory
workParam = fileAdapt.InsertCommand.Parameters.Add(n ew SqlParameter("@FileDirectory", SqlDbType.Text));
workParam.SourceColumn = "FileDirectory";
workParam.SourceVersion = DataRowVersion.Current;
// параметр для столбца id_urgency
workParam = fileAdapt.InsertCommand.Parameters.Add(n ew SqlParameter("@id_interaction", SqlDbType.Int));
workParam.SourceColumn = "id_interaction";
workParam.SourceVersion = DataRowVersion.Current;
System.Data.DataSet mySD = new System.Data.DataSet();

CSHARP]

Добавлено через 32 секунды
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   fileAdapt.Fill(mySD, "AddFiles");
                DataRow filenewRow = mySD.Tables["AddFiles"].NewRow();
                filenewRow["FileDirectory"] = Path.Combine(GlobalTrash._FileDir, listBox1.Items[i].ToString());  //путь к файлу
                filenewRow["id_interaction"] = id_new;  // указание на инцидент, которому принадлежит файл
                mySD.Tables["AddFiles"].Rows.Add(filenewRow);
 
                try
                {
                    fileAdapt.Update(mySD, "AddFiles");
                    mySD.Dispose();
                    mySD = new System.Data.DataSet();
                    fileAdapt.Fill(mySD, "AddFiles");
                    MessageBox.Show("Файл добавлен", "Ура!");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Ошибка");
                }
                a.Close();
            }[/
Добавлено через 4 минуты
немного коряво отобразила код... но суть, думаю., понятна...
0
0 / 0 / 0
Регистрация: 25.05.2012
Сообщений: 145
25.05.2012, 03:02  [ТС]
Vladilena, спасибо узнал много нового, у меня это выглядит так:
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
  public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private MySqlConnection connection;
 
        private DataSet DS;
 
 
        private MySqlDataAdapter adapter1;
        private MySqlDataAdapter adapter2;
        private void Form1_Load(object sender, EventArgs e)
        {
            connection = new MySqlConnection("Database=testthreetables;Data Source = localhost; User Id=root;Password=x1x2x3x4x5");
 
            DS = new DataSet();
 
 
            adapter1 = new MySqlDataAdapter("SELECT * FROM Persons", connection);
 
            
            adapter1.InsertCommand = new MySqlCommand("Insert INTO Persons (Person) VALUES(@Person)",connection);
            adapter1.InsertCommand.Parameters.Add("Person", MySqlDbType.VarChar, 45).SourceColumn = "Person";
            
            adapter2 = new MySqlDataAdapter("SELECT * FROM Companies", connection);
 
 
            adapter2.InsertCommand = new MySqlCommand("Insert INTO Companies (Company) VALUES(@Company)", connection);
            adapter2.InsertCommand.Parameters.Add("Company", MySqlDbType.VarChar, 250).SourceColumn = "Company";
            
 
            adapter1.FillSchema(DS, SchemaType.Mapped);
           
 
            adapter1.Fill(DS, "Persons");
            adapter2.Fill(DS, "Companies");
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
 
 
            
            DataTable DT1 = DS.Tables["Persons"];
            listBox1.Items.Clear();           
 
            foreach (DataRow DR in DT1.Rows)
                listBox1.Items.Add(DR[0]);
 
           
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            
            DataTable DT2 = DS.Tables["Companies"];
            listBox2.Items.Clear();
 
            foreach (DataRow DR in DT2.Rows)
                listBox2.Items.Add(DR[0]);
        }
 
        private void button5_Click(object sender, EventArgs e)
        {
 
            
 
        }
 
        private void button6_Click(object sender, EventArgs e)
        {
            adapter2.Fill(DS.Tables[1]);
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
 
            DataTable DT = DS.Tables["Persons"];
            DataRow DR = DT.NewRow();
 
            DR["Person"] = textBox1.Text;
 
            DT.Rows.Add(DR);
 
            adapter1.Update(DS, "Persons");
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
 
            DataTable DT = DS.Tables["Companies"];
 
            DataRow DR = DT.NewRow();
 
            DR["Company"] = textBox2.Text;
 
            DT.Rows.Add(DR);
 
 
 
 
            adapter2.Update(DS, "Companies");
 
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2012, 03:02
Помогаю со студенческими работами здесь

Как получить данные из таблицы в DataSet?
Такой вопрос, имеется БД созданная в Access подключил её к проекту, создался DataSet но как забрать данные из таблицы ? (допустим нужно...

Как программно добавить все таблицы из БД в DataSet
Подскажите пожалуйста, как программно добавить все таблицы из БД в DataSet

Как получить значение функции по колонке из таблицы dataset
Уважаемые гуру! Из таблицы dataset можно сделать выборку строк по заданному условию. А как в данном случае оптимально получить, например,...

Как загрузить таблицы в datagrid
Приветствую форумчане. Есть комбобокс и есть datagrid , в комбобоксе содержаться названия таблиц.подскажите пожалуйста как в один datagrid...

Как загрузить данные XML в DataSet
Добрый день. Есть проблема следующего рода. Необходимо загрузить данные из XML в DataSet. нашел соответствующее решение, что то вроде: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru