【解決方法】ladp oledb 接続を作成した後にデータを取得するにはどうすればよいですか


こんにちは、

OLEDb 接続を作成できます。 ただし、データを取得できません。 「SQL Developer」を使用して同じクエリを実行したところ、データがありました。

お知らせ下さい。

ありがとうございました。

私が試したこと:

次のコードで OLEDb 接続を作成できます。

C#
      var cfg = ConfigurationManager.AppSettings;

      string dirSvr = cfg["ldapServer"];
      string context = cfg["ldapContext"];
      string svcname = cfg["ldapSvcName"];

      string ldapAdress = $"LDAP://{dirSvr}/{context}";
      string query = $"(&(objectclass=orclNetService)(cn={svcname}))";
      string orclnetdescstring = "orclnetdescstring";

        DirectoryEntry directoryEntry = new DirectoryEntry(ldapAdress, null, null, AuthenticationTypes.Anonymous);
        DirectorySearcher directorySearcher = new DirectorySearcher(directoryEntry, query, new[] { orclnetdescstring }, SearchScope.Subtree);

        SearchResult searchResult = directorySearcher.FindOne();
        byte[] value = searchResult.Properties[orclnetdescstring][0] as byte[];

        string descriptor = "";
        if (value != null)
        {
          descriptor = Encoding.Default.GetString(value);
        }
        else throw new Exception("LDAP response was empty");

        string s = "Min Pool Size=1;Max Pool Size=10;Provider=OraOLEDB.Oracle;Pooling=true;User ID=usr;Password=pwd"; Data Source=" + descriptor + ";";
        OleDbConnection con = new OleDbConnection(s);

string strSQL = "Select * from users";

      con.Open(); //success
      OleDbDataAdapter oDA = new OleDbDataAdapter(strSQL, con);
      DataSet ds = new DataSet();
      oDA.Fill(ds);
      con.Close();

解決策 1

string s = "Min Pool Size=1;Max Pool Size=10;Provider=OraOLEDB.Oracle;Pooling=true;User ID=usr;Password=pwd"; Data Source=" + descriptor + ";";

あなたの弦の形成は正しくないようです。

試す:

C#
string s = "Min Pool Size=1;Max Pool Size=10;Provider=OraOLEDB.Oracle;Pooling=true;User ID=usr;Password=pwd;Data Source=" + descriptor + ";";

デバッガーを使用して、接続文字列が正しく形成されていることを確認します (予想どおり)。

コメント

タイトルとURLをコピーしました