小编R D*_*R D的帖子

解决SQL Server Compact Edition数据库文件中的损坏问题

这不是查询.它总结了我们解决SQL Compact数据库文件中的损坏问题的解决方案,几乎取得了一定的成功.SQLCE腐败是一个非常普遍的问题.我们从StackOverflow的早期帖子中获得了巨大的帮助,因此这篇文章.

我们的产品是一个3层架构,服务器作为Windows服务运行,通过.Net Remoting连接到Rich Clients.我们的产品从2006年开始使用SQLCE.我们已经从v3.1升级到v3.5,现在升级到v4.0.我们为一些非常具体的要求提供了自定义OR映射工具.我们遇到了v3.1的有限问题,我们在v3.5和v4.0上遇到了更多问题.

最初使用v3.5,我们实现了SqlCeEngine.Repair.但它只会丢弃损坏的数据,并尝试重新创建一个稳定的数据库.我们发现受影响的桌子的外键丢失了.我们必须立即废除这一点.我们开始向用户通知数据库损坏,并恢复上次备份.这只能暂时缓解; 腐败问题仍然存在.

今年,我们采用了v4.0.但是,我们的应用程序还引入了几个新功能,极大地增加了数据库调用的数量.v4.0开始很好,但在软件使用量增加时开始出现问题.应用程序运行时发生的损坏不会导致Windows崩溃,异常关闭或磁盘问题.数据库刚刚损坏.

下一篇文章介绍了我们针对此问题设计的解决方案:

corrupt corruption sql-server-ce

21
推荐指数
2
解决办法
6388
查看次数

使用自定义格式字符串将字符串解析为 int/long

在 C#.Net 中,以下是如何使用自定义格式字符串将数字格式化为字符串的简单示例:(示例取自:http://www.csharp-examples.net/string-format-int/

String.Format("{0:+### ### ### ###}", 447900123456); // "+447 900 123 456"
String.Format("{0:##-####-####}", 8958712551);       // "89-5871-2551"
Run Code Online (Sandbox Code Playgroud)

有没有办法将此格式化字符串转换回 long/integer ?有什么办法可以做到这一点:

long PhoneNumber = Int32.Parse("89-5871-2551", "{0:##-####-####}");
Run Code Online (Sandbox Code Playgroud)

我看到 DateTime 有一个方法 ParseExact 可以很好地完成这项工作。但我没有看到 int/long/decimal/double 的任何这样的东西。

.net c# int parsing custom-formatting

6
推荐指数
2
解决办法
3886
查看次数