Member 12719658 Ответов: 2

Преобразование форматированного текста в sqlite


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



Как лучше всего хранить большое количество форматированного текста в базе данных без потери текстового формата?

То, что я хочу сделать, - это сохранить код (например, скопировать весь код из файла .CS) и сохранить его в базе данных. Затем я хочу сделать оператор select и записать его в текстовый файл, где формат остается прежним.


Например ... если у меня есть....

[код]

using System;  
using System.IO;  
  
class TexFileSample  
{  
    public static void Main()   
    {  
          
        using (StreamWriter sw = new StreamWriter(@"C:\SomeTextFile.txt"))   
        {             
            sw.Write("Writing Text ");  
            sw.WriteLine("Here we go.");  
            sw.WriteLine("-------------------");  
            sw.Write("Today is is: " + DateTime.Now);  
            sw.WriteLine("Done");  
        }  
    }  
}  

[/код]

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

Я думал, что он должен быть хэширован или зашифрован или что-то еще, но не уверен, что я должен делать.

Есть предложения?

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

Много читал и искал лучший способ.

Graeme_Grant

Что вы уже пробовали до сих пор?

Member 12719658

Ну, прямо сейчас я шифрую текст AES. Все работает нормально, но не уверен, что я должен держать его зашифрованным или хешировать его в hex или что-то еще было бы лучше.

А ты как думаешь? Блоки кода, которые я вставляю в SQLite, могут быть довольно длинными (на самом деле это текст из моих файлов .cs, а также текст из файла java), поэтому я не знаю, есть ли способ убедиться, что целостность формата более защищена, или его шифрование будет в порядке.

На самом деле я не забочусь о безопасности файлов.

Wendelius

Не знаю, почему этот вопрос был отклонен. Компенсируется повышением голоса.

2 Ответов

Рейтинг:
12

Member 12719658

Узнал об сжиматься и разжиматься, поэтому я пошел с этим.


Рейтинг:
1

Wendelius

Если я правильно понял вопрос, у вас есть две отдельные проблемы: форматирование и упорядочение.

Что касается форматирования, то если данные содержат простые символы ANSI или unicode, то вы должны быть в порядке ТЕКСТ[^] тип данных в базе данных до тех пор, пока вы используете SqliteParameter Класс (Майкрософт.Данных.Базы Данных SQLite) | Майкрософт Документы[^] правильно и определить Юникод string для SqliteParameter.Тип Dbtype Имущества (Майкрософт.Данных.Базы Данных SQLite) | Майкрософт Документы[^].

Если данные содержат что-то более экзотическое, например изображения в двоичном формате, я бы сказал, что BLOB - это единственный способ.

Потом о заказе. A select в основном возвращает данные в "случайном" порядке, если только ORDER BY используется предложение, см. Язык запросов SQLite: выберите[^]
Таким образом, чтобы гарантировать, что данные (строки) возвращаются в том же порядке, в каком они были прочитаны, вам нужно иметь, например, целочисленный столбец, который вы увеличивали бы каждый раз, когда вставлялась строка. В общем случае столбца автоинкремента должно быть достаточно, если вы вставляете данные в правильном порядке, см. Автоинкремент SQLite[^]

Конечно, чтобы все это работало, вам нужно убедиться, что при чтении данных не теряется форматирование или упорядочение, поэтому вам нужно убедиться, что вы используете правильный считыватель для чтения ansi, unicode или двоичных данных, что всегда имеет место.


Member 12719658

Ну, это не имело никакого отношения к моему вопросу. Он спрашивал, должен ли я обновить базу данных форматированным текстом или зашифровать ее / хэш. Ничего общего с порядком по, АВТОИНКРЕМЕНТАМИ или типами данных. Я думаю, что ваш ответ был автоматически сгенерирован или что-то в этом роде, так что никаких очков для вас нет.

Wendelius

Жаль это слышать, но именно так я понял вопрос: как вводить и выводить текст в базу данных и из нее, чтобы текст не менялся во время процесса, даже если данные разбиты на несколько строк в таблице.

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

Member 12719658

I apologize if I came across wrong. I edited my question previously since I was on my phone writing it. As per my edit, I was just wanting to know what would be the best way to store data in a database without losing the integrity of the formatted data from a C# program. I have noticed before by updating or inserting data from a string - character returns and spacing have changed and I wanted to make sure I didn't lose them. So I asked if encrypting or hashing would be better. However, I provided a block of code as an example of what would be stored and was only to show the format of the text. I didn't realize that compressing and decompressing would do the trick.

Я прошу прощения, если был недостаточно ясен, и дам вам звезды за вашу помощь. Я просто не мог понять, где порядок вступил в игру, однако, возможно, я написал вопрос, который был непонятен.

Спасибо за вашу помощь.

Wendelius

Нет необходимости извиняться или переоценивать вообще :) Я просто хотел объяснить, что ответ не был автоматически сгенерирован, я просто неправильно понял вопрос.