2013-03-05 208 views
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

不需要數據庫升級,數據庫已經是兼容格式

我在做什麼錯?

+0

哪個版本的Systsem.data.SqlServerCe.dll的做你的項目引用和數據庫文件vesion是Mydatabase.sdf? – ErikEJ 2013-03-05 18:39:18

+0

Systsem.data.SqlServerCe.dll版本4.0.8876.1。我不知道如何獲取數據庫文件的版本。 – 2013-03-06 05:13:38

+2

也許[此博客文章](http://erikej.blogspot.nl/2010/08/how-to-upgrade-version-3x-database-file.html)可能會對您有所幫助。至少它包含一個函數來確定'sdf'文件的版本。 – JodyT 2013-03-07 19:45:53

回答

0

插入查詢是錯誤的。

正確的格式是:

「INSERT INTO表名值(字段與逗號delimitted)(用逗號DiffvaluesDelimited)」