blackoperato
Goto Top

Verbindung zu Oracle DB

Hallo Freunde der Technik!

Ich bin derzeit in der Ausbildung zum Fachinformatiker für
Systemintegration und derweil am Erforschen der Tiefen des DBA. Hab eine
OracleXE DB aufgesetzt und diese ist soweit auch funktionsfähig. Grundlagen
in PL/SQL hab ich mir auch angeeignet. Nun würde ich allerdings gerne die
DB per VB-Scripte administrieren. Allerdings scheitere ich schon daran,
dass es mir nicht möglich ist, auf die DB zu verbinden. Hab auch ziemlich
viel gegoogelt was Tutorials etc. angeht, allerdings leider mit sehr
überschaubarem erfolg. Könnte mir jemand dabei helfen, was ich alles
benötige? Oder gar n Tutorial empfehlen oder Literatur? Wobei ich einfach
vermuten würde, dass das nur 2-5 Zeilen Code sind, die mir so schwer fallen
wollen.

Mit freundlichen Grüßen
Chris00r

Content-Key: 118970

Url: https://administrator.de/contentid/118970

Printed on: April 19, 2024 at 22:04 o'clock

Member: education
education Jun 24, 2009 at 14:24:07 (UTC)
Goto Top
Hallo und Willkommen an Board und in Board

ODBC Schnittstelle hast schon eingefügt in dein PC?

http://www.muniqsoft.de/tipps/monatstipps/monattipp_PLSQLProzedurVB.htm

http://www.tecchannel.de/forum/windows-server/1464-code-vb-oracle.html
Member: blackoperato
blackoperato Jun 24, 2009 at 14:28:00 (UTC)
Goto Top
Yes Sir! Die Schnittstelle bzw. das Objekt ist vorhanden. Ich weiß nur leider nicht so recht, wie ich die Prozedur mit leben fülle, sprich wie die Parameter sind für username,pw etc.
Member: Biber
Biber Jun 24, 2009 at 15:29:54 (UTC)
Goto Top
Moin blackoperato,

weiß nur leider nicht so recht, ... wie die Parameter sind für username,pw etc.

Die kann aber außer Dir kaum einer wissen... und hier gehören sie rein.

....
    v_connectString = "Provider=OraOLEDB.Oracle;distribtx=0;Data   
         Source= TNS-Alias;UserId=user;Password=pwd;"  
....

Der TNS-Alias ist normalerweise bei einer XE-Instanz auch immer "XE".

Grüße
Biber
Member: blackoperato
blackoperato Jun 24, 2009 at 15:38:28 (UTC)
Goto Top
damit lässt sich doch schon etwas anfangen face-smile
Member: blackoperato
blackoperato Jun 25, 2009 at 08:48:23 (UTC)
Goto Top
hi,

bin weiter gekommen, aber ´so ganz klappen tut es nicht. er meldet jetzt n falschen user oder falsches pw..
kann es sein, das nochwas falsch ist?

Set mydb = CreateObject("ADODB.Connection")
Set connectionstring = CreateObject("ADODB.Command")

'-----------------------

mydb.ConnectionString = ( "Provider=OraOLEDB.Oracle;distribtx=0;DataSource=xe;UserId=useracc;Password=pw;")
mydb.Open

was bedeutet denn provider und das distribtx? vielleicht muss ich dort nochwas anpassen...gibts da nich n ordentliches sdk zu?
Member: Biber
Biber Jun 25, 2009 at 22:08:36 (UTC)
Goto Top
Moin blechoperato,

was bedeutet denn provider
Das sind so kleine grüne Bonbons, die es oft in Duty-Free-Shops gibt, glaub ich...
Aber bei ODBC-Verbindungen bezeichet es den Treiber-Anbieter oder vereinfacht gesacht den Datenbank-Treibertyp, die benutzte Schnittstelle.
vielleicht muss ich dort nochwas anpassen...
Wenn er doch sagt "Den User mit dem Passwort kenn ich nicht" - wieso sollte der Treiber nicht funktionieren? Klappt doch...
gibts da nich n ordentliches sdk zu?
Was möchstest Du denn mit Senf-Dill-Kartoffeln?
Wie wäre es ein oder zwei Seiten der sicherlich 800.000 Seiten der Oracle-Doku, den RedBooks etc pp.

Oracle stellt so viel geschriebenen Text für Endanwender bereit wie sonst kein anderer Datenbank-Anbieter.
Fast so viele Worte wie meine Ex-Schwiegermutter jeden gottverdammten Sonntagnachmitt^H^H

Bitte überprüfe auf Oracle-XE-Seite/serverseitig, ob der von Dir eingerichtete User, mit dem Du Dich auf die DB/das Schema verbinden willst, denn auch das CONNECT-bzw. das CREATE SESSION-Recht hat.

Sonst nützt er Dir nämlich außerhalb des Servers gar nichts.

Grüße
Biber
Member: blackoperato
blackoperato Jun 26, 2009 at 06:50:29 (UTC)
Goto Top
Moin face-wink

An den Userrechten kann es nicht liegen, denn der ACC hat dba rechte und per SQLPLUS kann ich mit diesem auch tun und lassen, was ich möchte face-smile
Und genau das ist der Grund, warum ich das nicht verstehe, weshalb es nicht klappen will face-sad
Member: Biber
Biber Jun 26, 2009 at 07:53:23 (UTC)
Goto Top
Moin blackoperato,

Erstaunlich.
Kontrollfrage:
- die CONNECT und CREATE SESSION-Rechte sind überprüft und vorhanden?
- die Anmeldung per SQLPlus erfolgt definitiv mit den gleichen Accountdaten?

Grüße
Biber
Member: blackoperato
blackoperato Jun 26, 2009 at 07:58:33 (UTC)
Goto Top
Hi face-smile

ja, es sind diese beiden (neben allen anderen) definitiv vorhanden. SQLPlus erfolgt zu 100 % mit den selben Daten wie der Zugriff per VBS. Der Witz ist auch, dass das nichtmal mit dem "SYSTEM" Account funktioniert. Daher muss etwas mit dem VBS im argen sein...gell?
Member: Biber
Biber Jun 26, 2009 at 08:07:44 (UTC)
Goto Top
Moin blackoperato,

bitte über dann mal, ob auf Deinem VB-Bock auch
a) der o.a. Treiber installiert ist
b) als Alternative der Treiber "(Oracle in XEClient)"

Wenn ja, wäre dieser (sinngemäße) Connection-String einen Versuch wert:
Driver=(Oracle in XEClient);dbq=111.22.33.44:1521/XE;Uid=myUsername;Pwd=myPassword;

Grüße
Biber
Member: blackoperato
blackoperato Jun 26, 2009 at 08:19:55 (UTC)
Goto Top
wir kommen der sache näher.

den oracle in XEclient gibts, habs im datasource administrator nachgeschaut.

Set mydb = CreateObject("ADODB.Connection")
Set mycmd = CreateObject("ADODB.Command")


'Dim con

'-----------------------

con = ("Provider=oracle in xe;distribtx=0;DataSource=xe;UserId=acc;Password=pw")
mydb.ConnectionString = con
MsgBox mydb.ConnectionString

mydb.Provider = ("oracle in xe")
MsgBox mydb.Provider = ("oracle in xe")

mydb.Open(con)


der provider gibts auch. die msgbox gibt ein "wahr" zurück. vorher wars "falsch".
allerdings bringt er jetzt die meldung, diesen provider könne er nicht finden...das ist merkwürdig, denn das teil is def. im system....
Member: Biber
Biber Jun 26, 2009 at 10:36:39 (UTC)
Goto Top
Moin blackoperoto,

drei Anmerkungen dazu:

  • man/frau muss sich auch mal von altem Ballast trennen können - schmeiss den nicht funktionieren Quark rückstandslos raus.
  • konkret: ich habe einen kompletten Beispiel-Connectionstring für diesen Treiber gepostet. misch den nicht mit irgendwelchen Text-Resten
  • der Treiber ist wirklich so geschrieben/benamst, wie ich den angegeben habe - mit runden Klammern. Diese runden klammern müssen auch so im Connectionstring auftauchen.

<< und das hier: [ mydb.Provider = ("oracle in xe") ] halte ich für einen Tippfehler >>

Bitte versuche es nochmal mit dem "Driver=(Oracle in XEClient);" wie in meinem letzten Kommentar angeregt.

Grüße
Biber
Member: blackoperato
blackoperato Jun 26, 2009 at 10:57:21 (UTC)
Goto Top
habs geschafft...Fehler war ein nicht vorhandenes lehrzeichend zwischen user und id -> "user id"

nun sieht der käse so aus:

Set mydb = CreateObject("ADODB.Connection")
Set mycmd = CreateObject("ADODB.Command")
Set myrec = CreateObject("ADODB.Record")


'Dim con

'-----------------------

con = "Provider=OraOLEDB.Oracle;distribtx=0;DataSource=xe;User id=user;Password=pw"


mydb.ConnectionString = con
MsgBox mydb.ConnectionString

mydb.Provider = "OraOLEDB.Oracle"
MsgBox mydb.Provider = "OraOLEDB.Oracle"

mydb.Open


state = mydb.State
MsgBox state

mycmd.ActiveConnection = mydb
MsgBox mycmd.State


die boxen sind immer zur kontrolle gesetzt und werden nachher natürlich weichen. der state der connection ist 1, also verbunden...

nun weiß ich nur nicht so recht, wie ich sql befehle absetze. hier vielleicht ein beispiel oder eine anregung noch parat, biber?)
Member: Biber
Biber Jun 26, 2009 at 13:29:14 (UTC)
Goto Top
Moin blackoperato.

Zitat von @blackoperato:
habs geschafft...
Gratuliere.
Fehler war ein nicht vorhandenes lehrzeichend zwischen user und id -> "user id"

Tja.... Hauptsache es war leerreich. face-wink
nun weiß ich nur nicht so recht, wie ich sql befehle absetze.
hier vielleicht ein beispiel oder eine anregung noch parat, biber?)

Na ja...zu Oracle-SQL und zu ADODB-Geraffel auch in Kombination ist nun wahrlich genug im Netz

Gegenvorschlag: lass uns diesen Beitrag (grün) abhaken.
und bei konkreten Problemchen oder Klemmern machst Du einen neuen Beitrag auf.

... und in Phase 2 dann auch mit Code in Codetags.

Grüße
Biber