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

Запись значений из коллекции в БД

28.01.2016, 13:07. Показов 1139. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте форумчане, помогите решить головоломку: Есть коллекция List<DateTime> dates
нужно записать её значения в БД


Думаю нужно использовать foreach и SqlCommand, может у кого есть пример синтаксиса
Вот мои размышления:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
  Guid CallTimeEnd = Guid.NewGuid();
 
                       foreach (DateTime data in dates)    
                        { 
                                    //   Console.WriteLine(data);
                            data ...
                        }                                                                                  
...
               
                SqlCommand cmd2 = new SqlCommand("DECLARE @ChainId varchar(100) UPDATE [oktell_manage].[dbo].[okstat_CallChain] SET [CallTimeEnd] = @CallTimeEnd WHERE [ChainId] = @ChainId", trans.Connection, trans);
                cmd2.Parameters.Add("@CallTimeEnd", SqlDbType.DateTime).Value = CallTimeEnd;                                         
                cmd.ExecuteNonQuery();
                trans.Commit();
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.01.2016, 13:07
Ответы с готовыми решениями:

Получение новой коллекции путем фильтрации элементов коллекции находящихся в другой коллекции
Всем привет, нуждаюсь в помощи знатоков) Имеется вот такая иерархия если представить в JSON: { teachers: ...

Сумма значений из коллекции
Как суммировать значения, хранимые в популяции (по строкам и для каждого набора данных, т.е. все значения хранимые в строке 0 и для...

Запись коллекции из элементов в переменную
&lt;div name = &quot;slider&quot;&gt; &lt;img name =&quot;slide0&quot; src=&quot;0.jpg&quot;&gt; &lt;img name =&quot;slide1&quot; src=&quot;1.jpg&quot;&gt; &lt;img name =&quot;slide2&quot; src=&quot;2.jpg&quot;&gt; &lt;/div&gt; ...

4
 Аватар для Defazze
325 / 136 / 28
Регистрация: 18.09.2014
Сообщений: 167
28.01.2016, 16:10
1. @ChainId откуда возьмется?
2. Почему CallTimeEnd объявлен как Guid, а используется, как DateTime?
3. Обновление надо делать внутри цикла, а не вне его
0
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
28.01.2016, 17:06  [ТС]
Цитата Сообщение от Defazze Посмотреть сообщение
1. @ChainId откуда возьмется?
2. Почему CallTimeEnd объявлен как Guid, а используется, как DateTime?
3. Обновление надо делать внутри цикла, а не вне его
__________________
поправил немного менее кривой код стал
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
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Xml.Linq;
 
 
 
class Program
{
    static void Main(string[] args)
    {
        //Guid ChainId = Guid.NewGuid(); /// Входной аргументParse
        Guid ChainId = Guid.Parse("DC146A59-900E-4A9A-B8CF-000D5EB8EAB4"); /// Входной аргументParse должен меняться здесь переменная будет
 
        using (SqlConnection cnn = new SqlConnection(@"Data Source=ZAPAD_SQL\DEV;Initial Catalog=oktell_manage;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"))
        {
            cnn.Open();
            Console.WriteLine(cnn.State);
            Console.ReadKey();
            using (SqlTransaction trans = cnn.BeginTransaction(IsolationLevel.ReadUncommitted))
            {
                SqlCommand cmd = new SqlCommand("select TOP 1 [ContextInfo] from [oktell_manage].[dbo].[okstat_CallChain] WHERE [ChainId] = @ChainId", trans.Connection, trans);
                cmd.Parameters.Add("@ChainId", SqlDbType.UniqueIdentifier).Value = ChainId;
                List<DateTime> dates = new List<DateTime>();
                XElement xd;
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        xd = XElement.Parse(reader[0].ToString());
                    }
                    else
                    {
                        return;
                    }
 
                    reader.Close();
                }
                foreach (XElement prop in xd.Element("call").Element("activity").Element("commutation").Descendants("property_simple"))
                {
                    if ((string)prop.Attribute("key") == "timestop")
                        dates.Add(DateTime.Parse((string)prop.Attribute("value")));
                }
                DateTime data = dates[0];
                /*  var dates = from prop in xd.Descendants("property_simple")
                where (string)prop.Attribute("key") == "timestop"
                select DateTime.Parse((string)prop.Attribute("value"));*/
 
                //Guid CallTimeEnd = Guid.NewGuid();
 
 
                SqlCommand cmd2 = new SqlCommand("UPDATE okstat_CallChain SET CallTimeEnd.Value = @CallTimeEnd WHERE [ChainId] = @ChainId", trans.Connection, trans);
                cmd2.Parameters.Add("@CallTimeEnd", SqlDbType.DateTime).Value = data;
                cmd.ExecuteNonQuery();
                trans.Commit();
 
            }
        }
    }
}
Добавлено через 3 минуты
Но всё равно не то
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
28.01.2016, 18:54
Цитата Сообщение от Alex_trader Посмотреть сообщение
SqlCommand cmd2 = new SqlCommand("UPDATE okstat_CallChain SET CallTimeEnd.Value = @CallTimeEnd WHERE [ChainId] = @ChainId", trans.Connection, trans); cmd2.Parameters.Add("@CallTimeEnd", SqlDbType.DateTime).Value = data; cmd.ExecuteNonQuery(); trans.Commit();
и что, это работает?
и никаких исключений не возникает?
"Не верю!"

Добавлено через 1 минуту
Цитата Сообщение от Alex_trader Посмотреть сообщение
поправил немного менее кривой код стал


Добавлено через 7 минут
и поймите, наконец, "один ж@па 2 базар сидеть невозможно"
нельзя ДОБАВИТЬ для записи с одним ключом несколько значений одного поля не нарушая 1НФ
нужна еще одна таблица для реализации 1:n
0
3 / 3 / 5
Регистрация: 11.11.2015
Сообщений: 413
29.01.2016, 08:39  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
и поймите, наконец, "один ж@па 2 базар сидеть невозможно"
нельзя ДОБАВИТЬ для записи с одним ключом несколько значений одного поля не нарушая 1НФ
нужна еще одна таблица для реализации 1:n
Спасибо за содействие, всё понял и исправил))) Правильно говоришь, задание неправильно было разъяснено, теперь всё стало на место, форычи там вообще не нужны всё делается для работы только с одной записью, если интересно завтра выложу готовый вариант

Добавлено через 10 часов 47 минут
Цитата Сообщение от pincet Посмотреть сообщение
и что, это работает?
и никаких исключений не возникает?
"Не верю!"
поверьте, работает!!!
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
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Xml.Linq;
using System.Linq;
 
 
 
class Program
{
    static void Main(string[] args)
    {
        Guid ChainId = Guid.NewGuid(); /// Входной аргументParse
        ChainId = Guid.Parse("82D548FE-00A7-4508-A2FB-001D16790349");
        using (SqlConnection cnn = new SqlConnection(@"Data Source=ZAPAD_SQL\DEV;Initial Catalog=oktell_manage;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"))
        {
            try
            {
                cnn.Open();
                using (SqlTransaction trans = cnn.BeginTransaction(IsolationLevel.ReadUncommitted))
                {
                    SqlCommand cmd = new SqlCommand("select [ContextInfo] from [oktell_manage].[dbo].[okstat_CallChain] WHERE [ChainId] = @ChainId", trans.Connection, trans);
 
                    cmd.Parameters.Add("@ChainId", SqlDbType.UniqueIdentifier).Value = ChainId;
 
                    List<DateTime> dates = new List<DateTime>();
                    XElement xd;
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        if (reader.Read())
                            xd = XElement.Parse(reader[0].ToString());
                        else return;
 
                        reader.Close();
                    }
                    DateTime ddd = DateTime.Parse(xd.Element("call").Elements().First(x => x.Name == "property_simple" && x.Attribute("key").Value == "timestop").Attribute("value").Value);
                    cmd.CommandText = "UPDATE okstat_CallChain SET CallTimeEnd = @CallTimeEnd WHERE [ChainId] = @ChainId";
                    cmd.Parameters.Add("@CallTimeEnd", SqlDbType.DateTime).Value = ddd;
                    cmd.ExecuteNonQuery();
                    trans.Commit();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.01.2016, 08:39
Помогаю со студенческими работами здесь

Запись сериализованной коллекции на ftp
Здравствуйте! Я через бинарную сериализацию сохраняю коллекцию, но сохранить ее на ftp ресурс у меня не получается (загрузить с ftp...

Запись в txt из коллекции Queue
Есть очередь. В ней записаны данные. public static readonly Queue&lt;string&gt; Data = new Queue&lt;string&gt;(); Код записывающий из очереди в...

ObservableCollection: проверка значений коллекции
Аха, есть неккая коллекция, содержащая в себе логин и пароль, var findAColl = ClientColl.Where(itemAf =&gt; (itemAf.Name ==...

Коллекции и перебор значений - как реализовать?
даны 3 слова = 4 буквы, 4 буквы, 5 букв. одинаковые буквы заменяются на одинаковые цифры, превращая слова в некоторые числовые значения. ...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru