OraSession.OpenDatabase メソッドではコネクションを開いてすぐ閉じます。

そして、接続文字列のみを OraDatabase に引き渡します。

OracleConnectionStringBuilder には適当な値を設定していますが。exe.config や、dll.config から読むようにしたほうがいいかもしれません。

using System.Runtime.InteropServices;
using Oracle.ManagedDataAccess.Client;

namespace OracleInProcServerForVBS
{

    [ComVisible(true)]
    [Guid(OraSessionClass.InterfaceId)]
    public interface OraSession
    {
        OraDatabase OpenDatabase(string dbname, string connect, int options);
    }

    [ComVisible(true)]
    [ProgId("OracleInProcServerForVBS.XOraSession")]
    [Guid(OraSessionClass.ClassId)]
    [ClassInterface(ClassInterfaceType.None)]
    public class OraSessionClass : OraSession
    {
        public const string ClassId = "9C587418-C346-4C2E-8847-A73222B75213";
        public const string InterfaceId = "E3C28C6D-15BC-47E5-A1C8-EC9271BBD189";

        public OraSessionClass() { }

        public OraDatabase OpenDatabase(string dbname, string connect, int options) {

            string[] arg = connect.Split('/');

            var builder = new OracleConnectionStringBuilder();
            for (int i = 0; i < arg.Length; i++) {
                switch (i) {
                    case 0:
                        builder.UserID = arg[i];
                        break;
                    case 1:
                        builder.Password = arg[i];
                        break;
                }
            }
            builder.DataSource = dbname;
            builder.Pooling = true;
            builder.MinPoolSize = 1;
            builder.MaxPoolSize = 20;
            builder.IncrPoolSize = 1;
            builder.DecrPoolSize = 20;
            builder.ConnectionLifeTime = 180;

            using (var con = new OracleConnection()) {
                con.ConnectionString = builder.ConnectionString;
                con.Open();
            }

            return new OraDatabase(builder.ConnectionString);
        }
    }
}



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2020-04-14 (火) 16:00:13 (42d)