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

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

25.05.2012, 02:16. Показов 4961. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru