Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
 Аватар для VoltDeMar
18 / 18 / 4
Регистрация: 05.06.2012
Сообщений: 1,020

Запись и считывание двухмерного массива

20.02.2013, 07:44. Показов 1872. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
А как бы реализовать запись и считывание двухмерных массивов в бд Access?

Добавлено через 1 час 39 минут
Вот что задумал реализовать:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 string ar ="";
            string row ="";
            int i, j=0;
            while (j < arr.GetLength(1))
            {
                row = row + '!' + ar;
                for (i = 0; i < arr.GetLength(0); i++)
                {
                    ar = arr[i, j].ToString() + ",";
                }
                j = j + 1;
            }
 
            OleDbConnection DBconn = new OleDbConnection();
            DBconn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database11.accdb;
Persist Security Info=False;";
            DBconn.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = DBconn;
            command.CommandText = "INSERT INTO Table"+"Array"+"VALUES"+row.ToString();
//Превращаем массив в строку.
подскажите как будет выглядеть команда добавления для ячейки определённого индекса и имени.

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
  int[,] arr = new int[10,16];
            int a,i =0,j=0;
            string curentItem = listBox1.SelectedIndex.ToString();
            label1.Text = curentItem;
            a = listBox1.SelectedIndex;
            OleDbConnection DBconn = new OleDbConnection();
            DBconn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database11.accdb;
Persist Security Info=False;";
            DBconn.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = DBconn;
            command.CommandText = "SELECT [Array] FROM [Table]";
            OleDbDataReader reader = command.ExecuteReader(); //тут получаю ошибку: отсутствует значение для одного или нескольких параметров
 
            while (j < arr.GetLength(1))
            {
                string[] rows = command.CommandText.Split('!');
                foreach (string row in rows)
                {
                    string[] values = row.Split(',');
                    foreach (string val in values)
                    {
                        while (i < arr.GetLength(0))
                        {
                            arr[i, j] = Convert.ToInt32(val);
                            i = i + 1;
                        }
                    }
                } j = j + 1;
            }
// Декодирование массива.
В чем причина ошибки?
Поставил тип поля в базе данных " Форматированный текст" влияет ли это на команды управления?
Буду рад обоснованной критике.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.02.2013, 07:44
Ответы с готовыми решениями:

Запись, считывание и изменения заданого елемента двухмерного массива
Ребята, помогите пожалуста! :) надо считать с файла двухмерный массив, изменить в нем выборочно некоторые елементы начиная с...

Запись в файл двухмерного массива
Есть DataGridView из него считал данные в двумерный массив. Есть вариант записи этого массива в текстовый файл?

Запись двухмерного массива в обратном порядке
Сообственно нужно записать массив в обратном порядке. Все перелазил к сожалению ничего рабочего не нашел, так что прошу помощи. ;C int...

9
 Аватар для gitarillo
755 / 554 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
20.02.2013, 08:49
Цитата Сообщение от VoltDeMar Посмотреть сообщение
command.CommandText = "INSERT INTO Table"+"Array"+"VALUES"+row.ToString();
Синтаксис инструкции INSERT каков?
SQL
1
INSERT INTO [имя таблицы] ([поле1], [поле2]) VALUES ('значение1', 'значение2')
Теперь по поводу считывание записи. Хотите хранить массив в одном поле как строку, сконкатенированную из элементов массива?
1
 Аватар для VoltDeMar
18 / 18 / 4
Регистрация: 05.06.2012
Сообщений: 1,020
20.02.2013, 13:49  [ТС]
Цитата Сообщение от gitarillo Посмотреть сообщение
Теперь по поводу считывание записи. Хотите хранить массив в одном поле как строку, сконкатенированную из элементов массива?
Да.
0
 Аватар для gitarillo
755 / 554 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
20.02.2013, 13:54
C#
1
 command.CommandText = "INSERT INTO Table ([поле хренение массива в виде строки]) VALUES ('" + string.Join(",", массив) + "')";
1
403 / 86 / 8
Регистрация: 16.02.2013
Сообщений: 356
21.02.2013, 07:59
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Да.
Это означает, что Ваша таблица не будет находится даже в первой нормальной форме. Данные в полях должны быть атомарны

Отношение находится в первой нормальной форме (сокращённо 1НФ), если все его атрибуты атомарны, то есть если ни один из его атрибутов нельзя разделить на более простые атрибуты, которые соответствуют каким-то другим свойствам описываемой сущности.
0
 Аватар для gitarillo
755 / 554 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
21.02.2013, 08:55
Цитата Сообщение от Cat2 Посмотреть сообщение
Это означает, что Ваша таблица не будет находится даже в первой нормальной форме. Данные в полях должны быть атомарны
Здесь вообще не будет идти и речи о нормализации.

Не по теме:

Ну раз мы комсомольцы, то пожалуйста.

0
 Аватар для VoltDeMar
18 / 18 / 4
Регистрация: 05.06.2012
Сообщений: 1,020
21.02.2013, 15:43  [ТС]
Другого варианта хранения я не нашёл. Если возможно сделать это правильней или проще подскажите пожалуйста как.
Однако повлияет ли это на работу программы? Эти массивы используются только программным кодом.
0
403 / 86 / 8
Регистрация: 16.02.2013
Сообщений: 356
21.02.2013, 23:30
Цитата Сообщение от gitarillo Посмотреть сообщение
Здесь вообще не будет идти и речи о нормализации.

Не по теме:

Ну раз мы комсомольцы, то пожалуйста.

Речь о нормализации идет всегда, когда есть слова "База данных"

Что может быть проще, чем скопировать да значения в два поля таблицы?
1
 Аватар для VoltDeMar
18 / 18 / 4
Регистрация: 05.06.2012
Сообщений: 1,020
23.02.2013, 04:33  [ТС]
Цитата Сообщение от Cat2 Посмотреть сообщение
Что может быть проще, чем скопировать да значения в два поля таблицы?
Действительно проще. А это возможно реализовать одной командой не записывая каждую строку в переменную?
0
403 / 86 / 8
Регистрация: 16.02.2013
Сообщений: 356
23.02.2013, 14:53
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Действительно проще. А это возможно реализовать одной командой не записывая каждую строку в переменную?
Разумеется можно.

SQLCommand с параметрами.

C#
1
2
3
commandSQL.Тext = String.Fomat("insert into mytablt (v1,v2) value (@v1,@v1)");
commandSQL.Parameters.AddWithValue("@v1",myvalue1  )
commandSQL.Parameters.AddWithValue("@v1",myvalue 2 )
Внимание!
AddWithValue использовать нежелательно!


Надежнее другая форма.
C#
1
commandSQL.Parameters.Add("@v1",  SqlDbType.Int, 4 ).Value = myvalue1;
Внимание! Этот пример только для целого цисла!



Или, по быстрому, только для проверки работоспособности алгоритма:

C#
1
commandSQL.Тext = String.Fomat("insert into mytablt (v1,v2) value ({0},{1})", myvalue0, myvalue1);
Внимание! Это только пример! Это будет работать только если myvalueX - целое число!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.02.2013, 14:53
Помогаю со студенческими работами здесь

Чтение и запись двухмерного динамического массива
Нужна помощь в работе с массивами: Имеем: 1. Игра типа Blocks (уничтожать несколько блоков кликом, если рядом находятся несколько...

Добавить запись в начало двухмерного массива
Имеется массив massiv: array of string; Массив заполнен на половину, т.е. до 50-го элемента. Необходимо вставить запись в начало массива.

Запись и чтение из файла двухмерного массива float
Доброго времени суток! Помогите пожалуйста, у меня в функции генерируется двухмерный массив float; Мне надо этот массив записать в...

Запись Двухмерного массива файл, так что бы потом его прочитать в массив строк
Здравствуйте Форум, Возникла проблема, которую я не могу решить. Суть в том что я читаю файл, шифрую его, затем мне нужно записать...

Перенос повторяющихся значений из двухмерного двухмерного массива в другой массив и запуск функции
Здравствуйте, форумчане! У меня есть двухмерный массив (string,string) В первом столбце хранятся номера телефонов, во втором хранится...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru