Как сохранить текст переменной длины в базе данных, созданной с помощью класса SqlCeEngine в C #? - PullRequest
0 голосов
/ 21 декабря 2011

Я использую Visual Studios 2010 для этой программы на C #, которую я создаю, где я создаю кеш, который я хочу сохранить в локальной базе данных, созданной классом SqlCeEngine.Я хочу использовать класс SqlCeEngine, чтобы сделать эту базу данных на 100% программным способом, но у меня возникают проблемы с поиском примеров CREATE TABLE с использованием типов данных MS SQL, хотя я все еще довольно плохо знаком с базами данных, и у меня был опыт работы с sqlite3..

Я хочу создать таблицу со столбцом UniqueID в качестве PRIMARY KEY, но в идеале использовать smallint в качестве типа данных для него, поскольку этот сгенерированный кеш не должен превышать 2 ^ 15 записей или даже 1500 записей.в этом отношении.Но допустим, я также хочу создать второй столбец, содержащий некоторый текст, но мне трудно определить, как долго это будет впереди.В среднем я ожидаю 8 символов или меньше, но иногда я могу ввести более 260 символов.Я мог бы просто сделать размер строки для записей равным максимальной длине строки (4000 символов, я полагаю), но для этого проекта потребление пространства кешем должно быть сведено к минимуму, и я думаю, что это приведет к значительным потерям.пространства.Я заметил, что существуют типы данных nchar и nvarchar, но я не совсем понял разницу, поскольку им обоим нужно было объявить длину.Казалось, что один намекает на то, что он может быть более дружественным к струнам различной длины под капотом SqlCeEngine, чем другой.

TL; DR

Есть ли способ объявитьбазы данных SQL на C # с использованием класса SqlCeEngine, который использует тип данных smallint для столбца первичного ключа и текст переменной длины во втором столбце без потери места?

1 Ответ

1 голос
/ 21 декабря 2011

Вы хотите использовать varchar, если только вы не храните символы Юникода, в этом случае используйте nvarchar.

Разница между char(50) и varchar(50) в том, что char(50) будет захватывать и удерживать50 символов, независимо от того, используются они или нет.varchar(50) допускает до 50 символов, но если используется 0, он не зарезервирует никакого пространства.

Так что если у вас было поле char (20), и значение было «Имя», размерв этом поле будет 20 символов, 4 из которых вы указали, и еще 16 для заполнения.Если бы у вас был varchar (20), а значением было «Имя», размер был бы 4.

...