我正在使用Visual Studios 2010进行此C#程序,我正在生成一个缓存,我想存储在SqlCeEngine类生成的本地数据库中。我想使用SqlCeEngine类以100%编程方式创建此数据库,但我在使用MS SQL数据类型查找CREATE TABLE示例时遇到问题,而我仍然是数据库的新手,以及我之前使用sqlite3的经验
我想创建一个带有UniqueID列的表作为PRIMARY KEY,但理想情况下使用smallint作为它的数据类型,因为这个生成的缓存不应超过2 ^ 15个条目,甚至不应超过1500个条目。但是,假设我还想制作一个包含一些文本的第二列,但我很难确定提前多长时间。平均而言,我期待8个字符或更少,但我可能偶尔会有超过260个字符的条目。我可以将条目的字符串大小设置为允许字符串的最大长度(我相信4000个字符),但是对于这个项目,缓存的空间消耗需要最小化,我认为这会浪费很多空间。我注意到有nchar和nvarchar数据类型,但我并不真正理解它们之间的区别,因为它们都需要声明一个长度。看起来似乎有人暗示,在SqlCeEngine的引擎盖下,它们可能会比其他字符串更加友好。
TL; DR
有没有办法在C#中使用SqlCeEngine类声明SQL数据库,该类使用第一列中的主键列和可变长度文本的smallint数据类型而不浪费空间?
答案 0 :(得分:1)
你想使用varchar,除非你要存储unicode字符,在这种情况下使用nvarchar。
char(50)
和varchar(50)
之间的区别在于char(50)
将抓取并保留50个字符,无论它们是否被使用。 varchar(50)
最多允许50个字符,但如果使用0,则不会保留任何空格。
因此,如果你有一个字段char(20)并且值为'Name',那么该字段的大小将是20个字符,你指定的是4个,另外16个用于填充它。如果您有varchar(20)且值为'Name',则大小为4。