[VbScript] Connession Database Oracle

felino

Utente Attivo
12 Dic 2013
925
10
18
Aci Catena (Catania)
Ciao a tutti,
dovrei realizzare in VBScript una connessione ad un Database Oracle.

Solitamente mi collega ad esso tramite Oracle SQL Developer, per il quale ho i seguenti dati:
- username
- password
- hostaname
- porta
- servicename

Come faccio a realizzare una connessione in VBScript?

Ho visto che tutti gli esempi richiedono un DataBase o InitalDataBase...

Grazie.
 

marino51

Utente Attivo
28 Feb 2013
3.035
192
63
Lombardia
se lavori con un pc windows,
puoi creare un file txt vuoto ( esempio DBname.txt ) che poi rinomini in udl ( -> DBname.udl )
cliccandolo 2 volte, ti si apre la configurazione per la connessione al database
puoi inserire tutti i parametri e al termine con l'apposito bottone, fare la verifica della connessione

se poi vuoi editarlo per esempio con il blocco note, all'interno leggi la stringa di connessione
nel mio caso, leggo,

Codice:
[oledb]
; Everything after this line is an OLE DB initstring
Provider=MSDAORA.1;Password=myPWD;User ID=myUSER;Data Source=myDB;Persist Security Info=True

quando sei in possesso del file udl, in vb si richiama il db in questo modo,

Codice:
Set TargetDB = CreateObject("ADODB.Connection") 
TargetDB.ConnectionString="File Name=DBpath\DBname.UDL;" 
TargetDB.Open

DBpath è la cartella dove hai parcheggiato il file udl (scusa la banalità)

per evitare di controllare gli errori ad ogni query, dopo averla impostata, richiamo la sub
Codice:
Sub EseguiDB()
   On Error Resume Next
   TargetDB.Execute(SQLQuery) 
   If Err.Number <> 0 Then
      ErrMSG = "Data Base error on mySCRIPT " & vbCrLf & _
               "Error Number : " & Err.Number & vbCrLf & _
               "Description  : " & Err.Description  & vbCrLf & _
               SQLQuery
      LogFile.Write Date & "-" & Time & "  " & NrRiga & vbCrLf
      LogFile.Write ErrMSG & vbCrLf
      WScript.Echo ErrMSG
      WScript.Quit(1)
   End If
   On Error Goto 0
End Sub
andando a scrivere l'eventuale errore in un logfile

ciao
Marino
 
Ultima modifica:

felino

Utente Attivo
12 Dic 2013
925
10
18
Aci Catena (Catania)
Ciao Marino,
grazie, sto provando a seguire la tua strada.
- username
- password
- host name
- porta
- service name (facendo riferimento a SQL Developer)

Quando mi viene chiesto
- 'server name' metto il 'service name'
e quando mi chiedono il
- 'database' cosa dovrei inserire?

Grazie.
 

marino51

Utente Attivo
28 Feb 2013
3.035
192
63
Lombardia
server name, in realtà, è il nome del server che gestisce oracle, credo che tu possa inserire il service name, se sei "online" con il server, nel menu a tendina ti elenca i server disponibili

database è il nome del database che devi usare, anche qui nel menu a tendina trovi le possibili scelte
 
Ultima modifica:

felino

Utente Attivo
12 Dic 2013
925
10
18
Aci Catena (Catania)
Ciao Marino,
ho provato a seguire i tuoi consigli, ma non sono arrivato ad una soluzione.

Ho scritto il seguente codice:
Codice:
Function ConnectionTest()

Const DB_CONNECT_STRING = "Provider=sqloledb;Data Source=myServiceName\myHostname,myport;User Id=myUsername;Password=myPassword;"

Set myConn = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
                
                myConn.Open DB_CONNECT_STRING
                objRecordSet.Open myQuery, myConn
                Wscript.Echo objRecordSet.fields.item(1) & " " & objRecordSet.fields.item(2)
                myConn.Close

End function

Call ConnectionTest()

Se provo a eseguirlo da un'istanza DOS ottengo il seguente errore:
Microsoft OLE DB Provider for SQL Server: [DBNETLIB][ConnectionOpen <Connect<>>.] Specified SQL server not found.

Dove potrebbe essere l'errore? :(

Grazie.
 

marino51

Utente Attivo
28 Feb 2013
3.035
192
63
Lombardia
le info di identificazione sono presenti nel file "TNSNAMES.ORA"
ti allego la spiegazione,

Database Identification by Service Name

An Oracle database is represented to clients as a service, that is, the database performs work on behalf of clients. A database can have one or more services associated with it.

Up to Oracle8i, an Oracle database service was uniquely identified by an Oracle System Identifier (SID). The SID was also used internally by the database as pointer to the System Global Area (SGA). Clients connected to a database instance by specifying the SID in the connect descriptor. This naming scheme did not distinguish services from instances.

Because an Oracle database can span over multiple computers, both the service as a whole and each of its instances are specified in Oracle9i and Oracle8i.

Service Name

A database is now identified by its service name. The service name is specified by the SERVICE_NAMES parameter in the initialization parameter file. SERVICE_NAMES specifies the name of the highest-level view of Oracle database service, that may span instances and/or nodes. SERVICE_NAMES is defaulted to the global database name, a name comprised of the database name and domain name.

Instance Name

Database instances are identified by an instance name with the INSTANCE_NAME parameter in the initialization parameter file. INSTANCE_NAME corresponds to the SID of the instance.

Connect Descriptors

Configure connect descriptors with the SERVICE_NAME (without an S) parameter to connect to an Oracle9i or Oracle8i database. For example, the following connect descriptor contains the address of a listener located on sales1-sun listening for connection requests for a database service called sales.us.acme.com:
sales=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-sun1)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.acme.com)))


Optionally, connect descriptors can be configured with the INSTANCE_NAME parameter to connect to a particular instance of the database. This may be necessary if you have an Oracle9i Real Application Clusters with multiple instances.

For example, the following connect descriptor contains the address of a listener located on sales-sun1 listening for connection requests for an instance called sales1 associated with the sales.us.acme.com database:
sales=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-sun1)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.acme.com)
(INSTANCE_NAME=sales1)))

poi sul pc dovresti avere installato il driver per lavorare con oracle

ti faccio il paragone con php (solo per cercare di spiegarmi meglio) se vuoi accedere ad un db con php devi avere attivo il driver specifico
[ExtensionList]

extension=php_pdo_sqlsrv.dll
extension=php_sqlsrv.dll

;extension=php_mysql.dll
;extension=php_mysqli.dll
nel set dei dischi di installazione di oracle, io trovo "oracle database client" che ho installato sul pc
ho quindi trovato tutti i parametri per la gestione della connessione usando i file udl,
non uso la connessione che proponi tu, proprio perché nel file udl è presente anche il bottone "verifica della connessione" che assicura il funzionamento indipendentemente dal codice scritto CatturaUDL.PNG

poi come detto uso il tutto come stai facendo tu
Codice:
Set myDB=CreateObject("ADODB.Connection") 

myDB.ConnectionString="File Name=" & Opt_udlfile & ";"

SQLcmd="myDB.Open"
call SQLcmdExec(SQLcmd)

Set RS_tabelle = CreateObject("ADODB.Recordset") 

imposto la query ... 
call SQLcmdExec("RS_tabelle.Open")
Do While Not RS_tabelle.EOF
	call Leggi_tabelle

sub SQLcmdExec(ActionToDo)
	On Error Resume Next
	Select	Case	ActionToDo

		Case	"RS_tabelle.Open"	RS_tabelle.Open SQLcmd, myDB
		Case	"RS_tabelle.Close"	RS_tabelle.Close

		Case	"myDB.Open"		myDB.Open
		Case	"myDB.Close"		myDB.Close

		Case	"EXEC"			myDB.Execute(SQLcmd)

	End Select

	if Err.Number<>0 then
		ErrMSG = "Error on     : " & SQLcmd & vbCrLf & _
			 "Error Number : " & Err.Number & vbCrLf & _
			 "Description  : " & Err.Description & vbCrLf2
		LogFile.Write ErrMSG

		if TRS then myDB.RollbackTrans

		WScript.Quit(1)
	end if
	On Error Goto 0
End sub

se hai la possibilità, prova a creare il file udl sul server dove fisicamente è installato oracle, (non crea nessun problema)
così ti rendi conto del modo di agire
 
Ultima modifica:

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.396
338
83
Occhio France75 non riesumare discussioni vecchie di anni! Inoltre quando intervieni cerca di far capire a cosa ti riferisci e a chi
Grazie
 
Discussioni simili
Autore Titolo Forum Risposte Data
W Errore di run-time di Microsoft VBScript error '800a0035' Impossibile trovare il file Classic ASP 0
felino [VBScript] [HP UFT] Iterare nodi di un TreeView (WPF) Visual Basic 0
felino [ASP.Net] [VbScript] Catturare valore del Hard Faults (Page Fault) ASP.NET 0
felino [VBScript] Json: catturare un Value dato il suo Nome Visual Basic 1
felino [VBScript] XML Prendere il Value di un childnode attravervo il nome del nodo Visual Basic 0
felino [VbScript] SwfObject: prendere il contenuto di una cella Visual Basic 0
L vbscript e javascript Javascript 0
T richamare funzione vbscript Classic ASP 1
L Collegare un virus VBScript a un link?? Sicurezza e Virus 0
I [Risolto] ASP VBSCRIPT e PAYPAL problemi con le spese di spedizione dinamiche Classic ASP 3
G Vbscript e access MS Access 0
grottafelix Microsoft VBScript compilation error '800a0401' Classic ASP 3
L Cancellare CAB con JavaScript / VbScript Javascript 1
A ASP javascript e ASP VBscript Classic ASP 6
G Come si esegue il comando "cd .." in Vbscript? Programmazione 1
G VBscript un aiuto ! Programmazione 0
B vbscript o javascript? Classic ASP 2
G vbscript e jscript Classic ASP 4
G gestione scanner tramite vbscript Classic ASP 4
T Language="vbscript" HTML e CSS 6
A trasformare un vbscript in javascript ..???? Javascript 4
C Carrello dell spesa da Jscript a VBscript Classic ASP 2
M AIUTO javascript>vbscript Javascript 0
jan267 Login con VBScript Classic ASP 1
Max 1 Accesso a database phpBB 1
L PHPSpreadsheet inserire dati da file .xlsx/.xls su database PHP 2
D passare valori da database sql a php PHP 1
L form immagini per il database PHP 0
R [C#] Quali dipendenze occorrono su progetto "Setup" con Access Database? .NET Framework 0
D Visualizzazione pagina basata sul valore di un campo del database PHP 0
G Appicazione HTML per inserimento dai in Database Access Microsoft HTML e CSS 0
socket32 [XAMPP] Server in Locale condividere database MySQL 0
J Form inserimento dati in database Ajax 1
Z Problema database MySQL con XAMPP PHP 0
D Estrarre database con link esterno Database 10
T [A pagamento] convertire database Offerte e Richieste di Lavoro e/o Collaborazione 5
A Mostrare dati database per pagine PHP 2
G gdpr database Leggi, Normative e Fisco 0
Tommy03 App mobile+ sito web con lo stesso database Sviluppo app per Android 4
Alex_70 Delete foto in database e cartella PHP 72
L Upload di un'immagine all'interno di un database usando php PHP 6
M modificare un file .XML da database Sql PHP 13
E lettura da un Database con Javascript jQuery 2
A Inserimento dati nel database tramite form + altre operazioni PHP 18
A Menù a tendina collegato a database PHP 13
C Store in PHP nel Database PHP 8
G Problema update di un database PHP 0
G database mysql contengono informazioni ? MySQL 0
S Database Netsons: come accedere da remoto PHP 1
L inviare i dati di un form ad un database PHP 6

Discussioni simili