4

この関数を呼び出そうとしています:

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

データベースのアップグレードは必要ありません。データベースはすでに互換性のある形式になっています

私は何を間違っていますか?

4

1 に答える 1