4
我想調用這個函數:的SQL Server CE例外InvalidDatabaseFormatException
public Exception SetData(string Data)
{
public string conectionstring = "Data Source=MyData1.sdf;Encrypt Database=True;Password=as!;File Mode=Read Write; persist Security Info=False;LCID= 1033";
query = "Insert into [CopyData] values (@data)";
try
{
con = new SqlCeConnection(conectionstring);
com = new SqlCeCommand(query, con);
com.Parameters.AddWithValue("@data",Data);con.Open();
com.ExecuteNonQuery();
con.Close();
return null;
}
catch (Exception ex)
{
return ex;
}
}
通過Main()
使用代碼
class Program
{
static void Main(string[] args)
{
DB cdb = new DB();
string b = "hello";
Exception e = cdb.SetData(b);
Console.WriteLine(e);
Console.ReadLine();
}
}
但我得到這個例外
System.Data。 SqlServerCe.SqlCeInvalidDatabaseFormatException
數據庫文件 由早期版本的SQL Server Compact創建。 請升級使用SqlCeEngine.Upgrade()
我試圖通過調用來解決它SqlCeEngine.Upgrade()
作爲
public Exception SetData(string Data)
{
public string conectionstring = "Data Source=MyData1.sdf;Encrypt Database=True;Password=as!;File Mode=Read Write; persist Security Info=False;LCID= 1033";
public string conectionstringc = "Data Source=MyData1.sdf;Encrypt Database=True;Password=as!;File Mode=Read Write; persist Security Info=False;LCID= 1033;Case Sensitive=true";
query = "Insert into [CopyData] values (@data)";
try
{
SqlCeEngine engine = new SqlCeEngine(conectionstring);
engine.Upgrade(conectionstringc);
con = new SqlCeConnection(conectionstring);
com = new SqlCeCommand(query, con);
com.Parameters.AddWithValue("@data",Data);con.Open();
com.ExecuteNonQuery();
con.Close();
return null;
}
catch (Exception ex)
{
return ex;
}
}
但隨後這個異常上前
System.Data.SqlServerCe.SqlCeException
不需要數據庫升級,數據庫已經是兼容格式
我在做什麼錯?
哪個版本的Systsem.data.SqlServerCe.dll的做你的項目引用和數據庫文件vesion是Mydatabase.sdf? – ErikEJ 2013-03-05 18:39:18
Systsem.data.SqlServerCe.dll版本4.0.8876.1。我不知道如何獲取數據庫文件的版本。 – 2013-03-06 05:13:38
也許[此博客文章](http://erikej.blogspot.nl/2010/08/how-to-upgrade-version-3x-database-file.html)可能會對您有所幫助。至少它包含一個函數來確定'sdf'文件的版本。 – JodyT 2013-03-07 19:45:53