0

私は C# (.NET 4.0) でアプリケーションを作成していますが、これは別のはるかに古いアプリケーションと統合する必要があります。要件の一部は、Pervasive PSQL バージョン 9 を使用するはるかに古いプログラムと統合することです。ODBC DSN をインストールせずにデータベースにアクセスすることについて、この質問をしました。答えの一部 (どうもありがとう) は、DTOを使用してデータベースを作成する必要があるということです。

COM 相互運用機能を使用してdto2.dllCOM ライブラリにアクセスし、サンプルを読みましたが、データベースの作成に問題があります。ここに私が使用しているコードの要約があります。

var session = new DtoSession();
var result = session.Connect("localhost", "", "");
Assert.AreEqual(dtoResult.Dto_Success, result);

testDB = new DtoDatabase {
    Session = session,
    Name = "Test1",
    Ddfpath = @"C:\TEMP\DATA\DDF",
    DataPath = @"C:\TEMP\DATA",
};

result = session.Databases.Add(testDB);
Assert.AreEqual(dtoResult.Dto_Success, result);

Name と path にどのような値を使用しても、最後の Assert は常に失敗します。エラー コードはDto_errDuplicateNameです。プロパティを含めないSessionと、別のエラー コード (7039) が返されます。

誰もこれを成功させましたか?私は何を間違っていますか?

4

1 に答える 1

1

Flagsオブジェクトのプロパティが不足していると思いDtoDatabaseます。DTO を使用してデータベースを追加する例として、アーカイブに次のコードがありました。このコードはおそらく DTO が最初にリリースされたときに作成されたものですが、動作し、私が確認できる唯一の違いはFlagsプロパティです。

DtoSession session = new DtoSession();
dtoResult result;
result = session.Connect("localhost", "","");
if (result != dtoResult.Dto_Success)
{
    Console.WriteLine("Error connecting. Error code: " + result.ToString());
    return;
}
DtoDatabase testDB = new DtoDatabase();
testDB.Name = "Test1";
testDB.DataPath = @"C:\DATA";
testDB.DdfPath = @"C:\DATA";
testDB.Flags = dtoDbFlags.dtoDbFlagNotApplicable;
result = session.Databases.Add(testDB);
if (result != dtoResult.Dto_Success)
{
    Console.WriteLine("Error Adding. Error code: " + result.ToString());
    return;
}
Console.WriteLine("DB Added.");
于 2013-01-24T15:27:51.347 に答える