根据连接字符串判断 SQL Server CE 4.0 数据库文件是否存在
给定以下连接字符串(对于 SQL Server CE 4.0),
Data Source=|DataDirectory|IntegrationTests.sdf
我如何确定该文件是否存在?
(我知道我可以在对 File.Exists()
的调用中对路径进行硬编码,但我不想这样做。如果我决定更改连接字符串怎么办?)
Given the following connection string (for SQL Server CE 4.0)
Data Source=|DataDirectory|IntegrationTests.sdf
how do I figure out if the file exists?
(I know I can hard-code the path in a call to File.Exists()
, but I don't want to. What if I decide to change the connection string?)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
也许使用
SqlConnectionStringBuilder
将连接字符串解析为其组成部分的类:在这种情况下,您可以使用
DataSource
属性:Perhaps use the
SqlConnectionStringBuilder
Class to parse your connection string into its component pieces:In this case you can use the
DataSource
property:看来对于Sql Server Express版本,使用|DataDirectory|自动触发检查文件是否存在,甚至在文件不存在时创建它。不确定 Sql Server CE 是否也是如此。
这是我能找到的唯一(旧)参考:http://msdn.microsoft。 com/en-us/library/aa478948.aspx
如果您想解析 |DataDirectory|到您的实际路径并自行检查,但是,您可以使用:
It seems that for Sql Server Express edition, the use of |DataDirectory| automatically triggered the check for file existence and even its creation if it does not exist. Not sure if the same holds true for Sql Server CE.
Here's the only (old) reference I could find: http://msdn.microsoft.com/en-us/library/aa478948.aspx
If you want to resolve |DataDirectory| to your actual path and do the checking by yourself, however, you could use:
这将是正确的答案:
使用此正则表达式来解析连接字符串:
接受的答案对于某些有效的 sql ce 连接字符串不起作用,因为它对非 ce sql 连接使用连接字符串生成器。
下面是提取它的 C# 代码:
This would be the correct answer:
Use this regular expression to parse the connectionstring:
The accepted answer will not work for some valid sql ce connection strings, as it uses the connection string builder for non-ce sql connections.
Here is the C# code to extract it: