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

потеряный DataAdapter

01.12.2010, 18:39. Показов 1330. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В методе была получена таблица из бд через адаптер. По завершению программы таблицу необходимо обновить, но того адаптера уже нет. Подскажите плиз как ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.12.2010, 18:39
Ответы с готовыми решениями:

Обновление БД с DataAdapter
на форме DataGridView. меняю значение ячейки, хочу соответственно изменить значения и в самой БД. update() не работает( посмотрите,...

DataAdapter не добавляет Записи в БД
Добрый день! Подскажите плиз, я в тупике. Вроде все правильно, а адаптер не добавляет строку в БД! public partial class...

проблема с DataAdapter.Update
вывожу при загрузке формы в datagrid табличку : Dim oCommand As New SqlClient.SqlCommand("select * From kioski", conn) ...

4
 Аватар для Terion
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
01.12.2010, 19:47
ну либо создать адаптер заново по той же sql команде, либо сделать его глобальной переменной)
0
6 / 6 / 3
Регистрация: 10.05.2010
Сообщений: 56
01.12.2010, 20:00  [ТС]
создаю заново, не помогает (
Exception
Update requires a valid UpdateCommand when passed DataRow collection with modified rows.
и на глобальном DataAdaper тоже самое мб код показать?
0
 Аватар для Terion
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
01.12.2010, 20:02
после создания адаптера создайте
C#
1
2
oledbcommandbuilder cm = new oledbcommandbuilder(ad);//ad-ваш адаптер
//написано от руки
не забудьте также убедиться, что ваша таблица имеет первичный ключ
2
6 / 6 / 3
Регистрация: 10.05.2010
Сообщений: 56
01.12.2010, 20:20  [ТС]
в общем вот
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
using System;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Configuration;
using System.Windows.Forms;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
namespace Project1
{
    public class Query_App
    {
        private string db;
        private string cnStr;
        private DataTable table_query;
        private DbProviderFactory factory;
        private DbConnection conn;
      
        public Query_App()
        {
            this.table_query = new DataTable();
            this.db = ConfigurationManager.AppSettings["provider"];
            this.cnStr = ConfigurationManager.AppSettings["cnStr"];
            this.factory = DbProviderFactories.GetFactory(db);
 
            
        }
        public DataTable query
        {
            set { table_query = value; }
            get { return this.table_query; }//test
        }
 
        public DataTable Query_Result(string query)
        {
            using (conn)
            {
                DataTable temp = new DataTable();
                conn = factory.CreateConnection();
                conn.ConnectionString = cnStr;
                conn.Open();
                DbCommand cmd = factory.CreateCommand();
                cmd.Connection = conn;
                cmd.CommandText = query;
                DbDataAdapter adapter = factory.CreateDataAdapter();
                adapter.SelectCommand = cmd;
                adapter.Fill(temp);
                return temp;
            }
        }
 
        public void work()
        {
            DataTable result = new DataTable();
            //  int min = 2000;
 
            for (int curRow = 0; curRow < table_query.Rows.Count; curRow++)
            {
                if (!DBNull.Value.Equals(table_query.Rows[curRow]["timeinterval"]))
                {
                    int numb = curRow;
                    string sinterval = table_query.Rows[curRow]["timeinterval"] + "";
                    string slasttime = table_query.Rows[curRow]["lasttime"] + "";
                    DateTime tnow = DateTime.Now;
                    DateTime tinterval = DateTime.Parse(sinterval);
                    DateTime tlast = DateTime.Parse(slasttime);
                    DateTime temp = new DateTime(tinterval.Year, 1, 1, 0, 0, 0);
                    TimeSpan ts_interval = tinterval.Subtract(temp);
                    tlast = tlast + ts_interval;
                    if (tnow > tlast)
                    {
                        result = Query_Result(table_query.Rows[curRow]["query"].ToString());
                        ResultSave(result, numb);
                    }
                    //else
                    //{
                    //     tnow - tlast;
                    //    if (min > tnow.Millisecond)
                    //    {
                    //        min = tnow.Millisecond;
                    //    }
                    //}
                }
 
            }
 
        }
 
        public void ResultSave(DataTable res, int number)
        {
            table_query.Rows[number]["lasttime"] = DateTime.Now;
            string id = table_query.Rows[number]["Id"].ToString();
            res.TableName = "result";
            StringBuilder sb = new StringBuilder();
            using (StringWriter sw = new StringWriter(sb))
            {
                using (XmlWriter xmlWriter = XmlWriter.Create(sw))
                {
                    res.WriteXml(xmlWriter);
                }
            }
            try
            {
                using (conn)
                {
                    string queryString = "SELECT date, queryId, res FROM result_query";
                    DbCommand cmd = factory.CreateCommand();
                    cmd.Connection = conn;
                    cmd.CommandText = queryString;
 
                    DbDataAdapter adapter = factory.CreateDataAdapter();
                    adapter.SelectCommand = cmd;
 
                    DbCommandBuilder builder = factory.CreateCommandBuilder();
                    builder.DataAdapter = adapter;
 
                    //adapter.InsertCommand = builder.GetInsertCommand();
                    adapter.UpdateCommand = builder.GetUpdateCommand();
                    //adapter.DeleteCommand = builder.GetDeleteCommand();
 
                    DataTable tableres = new DataTable();
                    adapter.Fill(tableres);
 
                    DataRow newRow = tableres.NewRow();
                    newRow["date"] = DateTime.Now;
                    newRow["queryId"] = id;
                    newRow["res"] = sb;
                    tableres.Rows.Add(newRow);
                    adapter.Update(tableres);
                    
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("Exception !! Message: " + e.Message.ToString());
            }
        }
 
       // public void SaveResult()
       // {
         //   using (conn)
           // {
            //    conn = factory.CreateConnection();
             //   conn.ConnectionString = cnStr;
              //  conn.Open();
              //  DbCommand cmd = factory.CreateCommand();
              //  cmd.Connection = conn;
              //  cmd.CommandText = "SELECT * FROM query";
              //  DbDataAdapter adapter = factory.CreateDataAdapter();
              //  adapter.SelectCommand = cmd;
              //  adapter.Update(table_query);
           // }
        }
    }
    
}
первым делом метод Query_Result устанавливает DataTable table_query из бд, потом он работает с другими запросами. По ходу работы в table_query меняются некоторые столбцы. По окончанию проги необходимо сохранить обновленную table_query. Как?
вот написал метод SaveResult, но не работает

Добавлено через 12 минут
сори сори
действительно primery key и добавил
C#
1
2
 DbCommandBuilder builder = factory.CreateCommandBuilder();
                builder.DataAdapter = adapter;
СПАСИБА)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.12.2010, 20:20
Помогаю со студенческими работами здесь

Не выполняется DataAdapter.Update
делаю так private void Form1_Load(object sender, EventArgs e) { conn = new...

Удаление записей(DataAdapter)
Здравствуйте! Пишу на C# , столкнулся с такой проблемой. Работаю с MS SQL Express, получаю данные из таблицы следующим образом(код...

Импорт csv файла в DataAdapter
Нужна помощь. Несколько дней ищу инфу, не могу решить проблему. Суть: надо импортировать CSV файл и поместить его, допустим, в...

Как получить значения из dataadapter?
Задача такова, получить список всех столбцов в базе данных и записать поимённо. Как мне получить каждое значение из dataadapter? Или для...

Запись данных в БД через dataAdapter
Подскажите пожалуйста почему данные в таблице есть, а в базе нет? private void button1_Click(object sender, EventArgs e) { ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru