请参阅问题How to check for the existence of a DB?我试图在web.config连接字符串中检测到DB的存在,但运气不佳。
我正在使用上述的最后一个答案作为我的审判。
试用1: web.config中的连接字符串
<add name="sqlCEConnString" connectionString="Data Source=|DataDirectory|db.sdf;Initial Catalog=master" providerName="System.Data.SqlServerCE.4.0"/>
我收到错误:不支持关键字:'初始目录'。
试用2:没有关键字
string conString = ConfigurationManager.ConnectionStrings [“sqlCEConnString”]。ConnectionString;
using(SqlCeConnection cnn = new SqlCeConnection(conString))
{
cnn.Open();
using (SqlCeCommand com = new SqlCeCommand("select count(*) from sys.databases where name = 'db.sdf'" , cnn))
{
int j=com.ExecuteNonQuery();
Response.Write("Result:" + j);
}
}
这次我收到以下错误: 指定的表不存在。 [@@ sys.databases]
我做错了什么?
答案 0 :(得分:5)
最后,我找到了根据连接字符串检测数据库是否存在的方法。在“SqlCeEngine”类下,有一个名为“Verify”的方法,可以通过该方法进行检测。
string conString = ConfigurationManager.ConnectionStrings["sqlCEConnectionString"].ConnectionString;
using (SqlCeEngine objCeEngine = new SqlCeEngine(conString))
{
if (!objCeEngine.Verify())
{
objCeEngine.CreateDatabase();
}
}
答案 1 :(得分:0)
答案 2 :(得分:0)
在这里查看源代码,它会检测ASP.NET应用程序中是否存在SQL CE数据库文件,并在需要时使用表创建它:http://sqlcemembership.codeplex.com