Jammes_Ca Ответов: 2

Манипулирование и редактирование txt-файла


Привет, я хочу создать базовую базу данных с файлом .txt. я создаю приложение с помощью C# smart device visual studio 2008.
у меня есть форма, которая содержит 3 поля текстового поля.
каждое текстовое поле представляет собой значение для установки.
например текстовое поле textbox1.текст= "ID_14" textbox2.txt="аэр",textbox3.txt="мужчины"
меня я хочу, когда нажму на кнопку. он сгенерирует мне txt-файл, содержащий данные, которые были в текстовом поле. в этом формате.

ID_14:; AER; men.

а если я добавлю другую информацию например
текстовое поле textbox1.текст= "ID_15" textbox2.txt="АЕЛ",textbox3.txt="женщины"
я добавляю эту информацию из моего последнего txt файла, и результат будет таким

ID_14:; AER; men.
ID_15:; AEl; женщины.

это первый шаг.

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

я понятия не имею, как это сделать. пожалуйста помочь

Что я уже пробовал:

Привет, я хочу создать базовую базу данных с файлом .txt. я создаю приложение с помощью C# smart device visual studio 2008.
у меня есть форма, которая содержит 3 поля текстового поля.
каждое текстовое поле представляет собой значение для установки.
например текстовое поле textbox1.текст= "ID_14" textbox2.txt="аэр",textbox3.txt="мужчины"
меня я хочу, когда нажму на кнопку. он сгенерирует мне txt-файл, содержащий данные, которые были в текстовом поле. в этом формате.

ID_14:; AER; men.

а если я добавлю другую информацию например
текстовое поле textbox1.текст= "ID_15" textbox2.txt="АЕЛ",textbox3.txt="женщины"
я добавляю эту информацию из моего последнего txt файла, и результат будет таким

ID_14:; AER; men.
ID_15:; AEl; женщины.

это первый шаг.

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

я понятия не имею, как это сделать. пожалуйста помочь

2 Ответов

Рейтинг:
2

Sergey Alexandrovich Kryukov

Вся эта проблема настолько неудобна и нелегка в реализации, что трудно дать исчерпывающий совет. Однако идея реализации хранилища баз данных может оказаться полезной. (Возможно, одной из целей было бы развитие понимания существующих систем баз данных. :-))

Проблема заключается в следующем: похоже, вы пытаетесь использовать обычный текстовый файл, где строка представляет некоторую запись. Как правило, это очень плохой носитель для хранения базы данных, потому что строки могут быть разной длины. Представьте, что вам нужно изменить одну запись близко к началу файла. Если измененная запись делает другую длину строки, вам придется переписать остальную часть файла, потому что каждый символ будет смещен. Вы ничего не можете с этим поделать: в общем случае вы должны прочитайте весь файл целиком, и напиши все обратно или большую его часть, в среднем 1/2 размера файла. Вы даже не можете пропустить какую-либо часть файла при чтении, потому что вы никогда не знаете длину каждой строки.

Одним из решений является создание другого файла. Вы можете назвать его "индексным файлом". В своей простейшей форме он может использоваться для хранения позиции каждой строки в основном файле, а также длины каждой записи. Кроме того, вам может понадобиться иметь несколько индексов. Например, один индекс будет отсортирован по одному полю, другой-по другому. Затем основное чтение будет сделано путем подсматривания линии в заданном положении. Однако проблема с модификацией останется прежней: вам нужно будет переписать остальную часть файла; кроме того, вы должны сохранить целостность между индексными файлами и основным файлом.

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

Во всяком случае, другим подходом для одной таблицы были бы записи фиксированного размера. Допустим, в метаданных таблицы вы устанавливаете фиксированные размеры всех типов данных. Это особенно болезненно для строк: для каждого атрибута вам нужно будет иметь ограничение по длине. С линиями фиксированного размера вам даже не нужно символы конца строки Вы просто просматриваете запись, умножая номер записи на размер записи, переходите в эту позицию в файле и читаете/записываете ее, не переписывая остальную часть файла. Но ограничение длины струн является драконовским…

Ну, просто немного пищи для размышлений…

—СА


Рейтинг:
1

Richard MacCutchan

Лучший способ сделать это-создать класс объектов, содержащих эти сведения, привязать их к текстовым полям и использовать сериализацию для сохранения их в резервном хранилище. Есть много примеров каждого вопроса, которые покажут вам, как это сделать.