ade*_*ena 55 database sql-server visual-studio-2008 sql-server-ce
我想使用MS Visual C#Express构建的应用程序(如果需要,我愿意升级到标准版)需要数据库.
我对SQL Server Compact感到很兴奋 - 因为我不希望那些将在他们的计算机上安装我的应用程序的人必须安装整个SQL Server或类似的东西.我希望这对最终用户来说尽可能简单.
所以我很兴奋,直到看起来我的表格中的列可以做什么有限.我创建了一个新的数据库,创建一个表,当我去创建列似乎没有一个"文本"数据类型 - 只是一些所谓的"NTEXT"似乎被限制为255个字符."int"似乎限于4(我想要11).并且似乎没有"auto_increment"功能.
这些是我必须忍受的真正限制吗?(或者是因为我使用的是"Express"而不是"Standard").如果这些是真正的限制,那么我的其他数据库选项满足我的要求是什么?(用户是biggie的简易安装 - 我假设我的最终用户只是计算机的普通用户,如果它很复杂会让我的应用程序感到沮丧)
-Adeena
PS:我还希望将我的数据库数据加密到最终用户.我不希望他们能够直接访问数据库表.
PPS.我读过:http: //www.microsoft.com/Sqlserver/2005/en/us/compact.aspx 并没有看到关于这些特殊限制的讨论
Joe*_*orn 32
我不确定加密,但你可能会发现这个链接很有帮助:http:
//msdn.microsoft.com/en-us/library/ms171955.aspx
至于其余部分:
"Text"和"auto_increment"让我想起了Access.SQL Server Compact应该与SQL Server的服务器版本升级兼容,因为压缩数据库中使用的查询和表应该在不进行修改的情况下传输到完整数据库.考虑到这一点,你应该先了解一下SQL服务器类型和名称,而不是访问的名字:在这种情况下,即varchar(max),bigint和identity列.
不幸的是,你会注意到varchar(max)的失败,因为Compact Edition还没有varchar(max)类型.希望他们能很快解决这个问题.但是,您正在查看的ntext类型支持超过255个字节:实际上是2 30个,这相当于超过5亿个字符.
最后,bigint使用8个字节进行存储.您要求11.但是,我认为您可能会感到困惑,存储大小表示可用的小数位数.绝对不是这样的.8字节的存储空间允许最多2 64的值,这将容纳超过11位的数字.如果您有这么多项目,那么您可能还需要服务器级数据库.如果你真的想用数字来思考,那么也numeric提供了一种类型.
Tab*_*Tab 17
一些,希望有用的评论:
1st - 不要使用SQLite,除非你喜欢在写入期间锁定整个数据库(http://www.sqlite.org/faq.html#q6),也许更重要的是在.Net应用程序中它不是线程安全的更重要的是它必须重新编译以支持线程(http://www.sqlite.org/faq.html#q6)
作为我当前项目的替代品,我查看了Scimore DB(他们有一个带有ADO.Net提供程序的嵌入式版本:http://www.scimore.com/products/embedded.aspx)但是我需要使用LINQ To SQL作为O/RM所以我不得不使用Sql Server CE.
自动增量(如果你指的是自动键增量)就是它一直以来的例子 - 示例表:
- 表用户
CREATE TABLE Tests (
Id **int IDENTITY(1,1) PRIMARY KEY NOT NULL,**
TestName nvarchar(100) NOT NULL,
TimeStamp datetime NOT NULL
)
GO
Run Code Online (Sandbox Code Playgroud)
至于文字大小,我认为已经回答了.
以下是microsoft technet加密信息的链接:(http://technet.microsoft.com/en-us/library/ms171955.aspx)
希望这个对你有帮助....
Joh*_*lle 16
不得不引用两个因素:
您可能能够很好地隐藏密钥,以便恢复它的努力不值得信息的价值.Windows有一些整洁的机器和用户本地加密例程来帮助.但是如果你的设计强烈要求用户永远不会找到你隐藏在他们计算机上的数据(但是你的程序会)你需要重新设计 - 那个保证人根本无法完成.
ntext支持非常大的文本数据(请参阅MSDN - 这适用于Compact 4.0,但对于您提到的数据类型,同样适用于3.5).
int是一种数字数据类型,因此大小4意味着4字节/ 32位存储(-2,147,483,648到2,147,483,647).如果要在单个列中存储11个字节的数据,请使用varbinary大小为11 的类型.
使用IDENTITY关键字在SQL Server世界中自动递增列.这会导致SQL Server在将数据插入行时自动确定列的值,从而防止与任何其他行发生冲突.
您还可以在SQL Compact中创建密码或加密数据库,以防止用户直接访问您的应用程序.请参阅MSDN上的保护数据库.
您上面提到的所有项目都不是真正的限制,因为他们了解如何使用SQL Server.
话虽如此,SQL Compact有一些限制.
NVARCHAR(MAX)
NTEXT 工作得很好VIEWs或PROCEDUREs