Oracle and Visual Basic using ADO

Level:
Level2

This VB6 tutorial explains how you can access an Oracle database from within Visual Basic. It is a bit short as it was thrown together from a post on the vbforums.com page. However if you check out the Sample VB6 and Oracle Source Code that goes along with it. You should be able to easily understand what is going on. Read on and enjoy as you develop your Visual Basic Oracle application.

Oracle databases have been around for years, and although they are not as popular as their Microsoft counterpart, many business rely on Oracle backends for all their needs. Because of this, we must know how to interface with an Oracle database from within our VB6 application. This VB6 tutorial will walk us through exactly how to do this.

To access an Oracle database it is very similar to how you access any other database. We can simply use an ADO Connection object. We set the provider to be our Oracle provider and setup our connection string and password.

  1. Set dbConn = New ADODB.Connection
  2. With dbConn
  3.     .Provider = "OraOLEDB.Oracle"
  4.     .Properties("Data Source") = "DatabaseName"
  5.     .Properties("User Id") = "someuser"
  6.     .Properties("Password") = "somepassword"
  7.     .Open
  8. End With

After we setup the connection all we do next is setup an ADO Command object that will be used with our oracle database. This is the same things we do for any Visual Basic database application.

  1. Set Cmd = New ADODB.Command
  2. Set Cmd.ActiveConnection = dbConn
  3. With Cmd
  4.     .Parameters.Append .CreateParameter(, adVarChar, adParamOutput, 50)
  5.     .Parameters.Append .CreateParameter(, adNumeric, adParamOutput)
  6. End With

Now is where things start being specific to our Oracle database. Getting a result set back from an Oracle SP is not as simple as it is in SQL Server. The results must come back to the calling program in something called a reference cursor (ref cursor). This will discuss what a ref cursor is and how to implement them and get data back.

Oracle creates an implicit cursor for every select query (I think that is the same for any database system). The cursor is simple the recordset results. If you are not going to use that result set for anything else (ie: to generate another query to execute) then you do not need to declare a cursor. But to get the result set out of Oracle you need something that is called a ref cursor. This ref cursor is more or less the same as and ADO recordset. You declare the ref cursor in code some where on the Oracle database, that ref cursor (sort of a structure in .Net) is then listed as an In and Out parameter of the SP.

You generate the select statement you want to run then open the ref cursor you created as follows:

  1.     Open cRefCur For
  2.        Select ....... (columns form whatever tables)
  3.          From (table names)
  4.          Where (conditions and Joins).
Standard SQL here with one big exception since if using Oracle 8i or earlier, Oracle at that release level did not support the Inner and Outer Join statements. You must use the Oracle version of them. Inners are just and equal sign as in Sales.ProductID = Prodcuts.ProductID. The Outer join is a lot messier, outer joins use the same equals sign and also a plus (+) sign on the deficient side of the equal sign.

This is the way to create the cursor:

First we create a package that will hold all the different return types:
  1. CREATE OR REPLACE PACKAGE cv_types AS
  2.  
  3.         TYPE WellData IS RECORD( 
  4.                 WellName                Varchar2(50),
  5.                 ResultsCount    Number
  6.         );
  7.         TYPE CV_WEllData IS REF CURSOR RETURN WellData;
  8.    
  9. End;
  10. /
Next we create a stored procedure that will use that ref cursor declared above:
(This procedure does not have any inputs, only output paramters).
  1. Create Or Replace Procedure WellCounting (   
  2.         pWellName   OUT VARCHAR2,
  3.     pCount            OUT   NUMBER,
  4.     rsWellData  IN OUT cv_types.CV_WEllData)
  5.  
  6. AS
  7.        
  8. BEGIN
  9.         Open rsWellData For
  10.                 Select
  11.                         Wells.WELLNAME,Count(RESULTS.WELLID)
  12.                 Into
  13.                         pWellName,
  14.                         pCount
  15.                 From
  16.                         Wells, Results
  17.                 Where
  18.                         Wells.WellID = Results.WellID
  19.                  group by
  20.                         WEllName;
  21.            
  22. EXCEPTION
  23.   WHEN OTHERS THEN         
  24.       ROLLBACK WORK;
  25.       RAISE;
  26.  
  27. End WellCounting;
  28. /
We can then call the stored procedure from VB as shown in the included VB Projects.

An example of a stored procedure with input parameters is here:
  1. Create Or Replace Procedure OneWellCount (   
  2.         pWellID  IN  Number,
  3.         pWellName   OUT VARCHAR2,
  4.     pCount            OUT   NUMBER,
  5.     rsWellData  IN OUT cv_types.CV_WEllData
  6.     )
  7.  
  8. AS
  9. BEGIN
  10.         Open rsWellData For
  11.                 Select
  12.                         Wells.WELLNAME,Count(RESULTS.WELLID)
  13.                 Into
  14.                         pWellName,
  15.                         pCount
  16.                 From
  17.                         Wells, Results
  18.                 Where
  19.                         Wells.WellID = pWellID And
  20.                         Wells.WellID = Results.WellID
  21.                  group by
  22.                         WEllName;
  23. EXCEPTION
  24.   WHEN OTHERS THEN         
  25.       ROLLBACK WORK;
  26.       RAISE;
  27.  
  28. End OneWellCount;
  29. /
We can also test these procedures (and ref cursors) from the SQL*Plus prompt by doing the following:
  1. Enter the command SET SERVEROUTPUT ON;
  2. Now we set up variables to hold data going into and out of the SP:
    Assuming we are using the first SP displayed, the we will need 3 variables:
      VARIABLE P1   VARCHAR2(50) This is because the field we are returning is 50 chars
      VARIABLE P2   Number           This is a number coming back from the SP;
      VARIABLE P3   REFCURSOR     This will hold the result set that is coming back
  3. From the SQL prompt enter:
      EXECUTE WellCounting( :P1, :P2, :P3);
  4. If the procedures completes successfully we can now display the output.
    The variable P1 and P2 will hold the last Well Name and number of results
    for that well name. The variable P3 will hold the complete recordset that
    is being returned. To display that result in SQL*Plus enter:
      Print P3
Download the Oracle Example VB6 Code.

Comments

please help for sc/st boy

Respected Sir,

I having caste certificate from SC/ST and NT (Nomadic Tribe). I wanting to do vb(Visual Basic) program for engineerng college. I need help since we are backward class. please give us the porject details on railway reservation tooling for my computer lab.

thank you sirjee,
Bhijoy G,
dahisar (west)
Near IOC petrol pumping

Help I'm CS student

Help me I have master MSC(IT) program for reservation.
I WANT IT NOW! PLZ CAN YOU HELP ME I send teh tstuf too u

pls send me shop project

pls send me shop project (vb6)
tank you

i need project wid vb 6 as frontend and oracle 10g as backend

i need project wid vb 6 as frontend and oracle 10g as backend .. i hav to submit it on 20th april... plz help me.. its too urgent..

Need a project urgent

Sir,i need a project for I.P urgently...it must have V.B as front end and Oracle as back end...plz help.

U can rply me at sonku007@gmail.com...

Array return from oracle to vb

I want to get an array from oracle procedure.I can't please help me. Note i want to return array. Not cursor.!

vb-oracle project topics

sir....
i need some latest project topics on vb-oracle urgently.... i m in 4th sem of mca. and i have to submit it as my 4th sem project. i don't want to do the common projects like students, library, etc managent systems.. so sir plz send me some latest topics.. plz...
thanking u.... pranjal

informatics practices for class12

Hiiiiiiiii! i am a student of class 12. i have got project to make income and expence record in vb using connectivity for my board examination so please kindly help me in completing my project . i have not started till now please tell me how to make form and how to do coding using connectivity please hurry up because i have to submit theproject on 25 jan 2010

railway resrvation

hello sir/mam
I am doing MSC(IT)2nd yr i want project in frontend vb and backend oracle as soon as possible
plz.... help me

you fool, dont you have ur

you fool, dont you have ur own brain ......apna dimag use kar

oracle n vb6

hello
i need a project orgently vb6 as front end and oracle as back end .........i hv to deposite it in the 3rd week of jan 2010...........can u help me............iam totally confused.........wat to do or not to do...........plz.pzl
plz
plz help me

Projects

Send me your requirements i can make the project (heartone.satya@gmail.com)

car workshop management

plz make my project.plz i had to submit it on 3 rd feb 2010

project on music shop manaement system with vb & sql plus code

hey!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! i wana it fast till 30 jan morning.........................................
PLZ MAKE IT FAST
PLZ
PLZ
PLZ
PLZ
PLZ
PLZ

hiiii can u really hlp me2make project. . .

hiii m new 2diz forum can u hlp me 2make a project

doubt on input box

i m getting error when i cancel input box...... pls pls help me in this

i will make your project,,,

i will make your project,,, a complete project... with adodb and that to a amazing project.//
tell me how much you can pay for it?
conditions apply.....

school management project

i am studying in class 12 and i need school management project for my board file
i need vb in front end and oracle in back end ( linked with vb data controls only)
can anyone help me

please help me

mail me on ajeetsngh49@gmail.com

hey i m also doing the same

hey i m also doing the same project.... i m in 12
but i am getting error when i cancel input box.. pls help me

ip and oracle

iiiiiiii want a project on vb and oracle using ado on hotel management / airlines / railway.It's EMERGENCY!!!!

oracle 10g diveloper

hello
i have a problem in oracle 10g diveloper when i run the form it is apear just it's soursecode not
show me the result,please anser me more clear

please teach me how to create a log in page in vb.net

please teach me how to create a log in page in vb.net

i have to do a project -vb

i have to do a project -vb as front end ..and oracle as back end...i am a student in 12th. my topic is airline reservation system...please someone do help me with the code as fast as possible..

ORACLE/SQL COMMANDS

hey guys... I am a student doing his diploma need major help....... (PEOJECT).....
Vb as Front end and Oracle/sql as backend.....

i have to present a form like this.....

REG NO: ______
NAME:________
ASSGNMENT I:____ ASSIGNMENT II : ______ ASSIGNMENT III : ______ AVG:_______
INTERNAL I :_______ INTERNAL II :______ MODEL :_______ AVG:________
ATTENDANCE:_____ MARK : _____
INTERNAL MARK:_______ >>

ADD UPDATE DELETE SHOW :________

SOME ONE HELP ME........................

Oracle

hi,
don't worry!
first u design the form.
then use ADO control to connect with your database.
normal code is here

vb and oracle

I will make projects for you

program for daily attendance using vb,sql,pl/sql nd connectivity

i want coding of it

Project

I ll do ur pjt...

project topics using oracle and vb

i am doing final year in computerscience i wnt some projects using oracle and vb

Project

i ll do ur project..... pls send ur requirement to rajaprabhucse@yahoo.com and k_rajaprabhu@yahoo.com

projects

hi.. could u please tell me wat type of projects can i do based on oracle and visual basics.....

Problem - search

I want to search in Oracle database and want output in VB 6 form...

could u plz help~!

please respond me

splease tell me how to make the login page in vb6.please give me the code

pjt

Tel ur id i ll upload the coding....

i need a project that which

i need a project that which has Visual basic as front end and oracle as its backend.please can u help on this

Project

Hello Sir/Mam

I am in class 12th cbse ............. i need a project that which has Visual basic as front end and oracle as its backend........it should have minimum 8 forms,

so plz mail me at rohit_hot42@yahoo.com

thanking you
waiting for the reply

I Need a project with vb as a front end oracle as back end

plz porvoide3 me with it iam a high school student

need of projects in visualbasics using oracle code

hi
i am a m.sc maths studnt and i need a project in computerscience.hence i need vbprojects with oracle codes suitable for a pg student. so pl help me wit a simple free projects and send it to my mail id"bubbly_sen@rediff.com" as soon as possible
thank u
bye

thank's for your help!

thank's for your help! Sometimes, even an expert developer, forgets sintaxes!

I don't think Oracle is

I don't think Oracle is antiquated or less than SQL. However, It seems that its hard to find many Visual Basic programmers that utilize Oracle as their back end database. This is probably not surprising - considering that it is MICROSOFT Visual Basic we're talking about.

Oracle is something we must learn to deal with?

This article makes it sound like Oracle is just an antiquated DB technology that we have to deal with as if it were FORTRAN or Amiga machines. I don't know the stats, but I'd say it's a safe bet Oracle far outpaces SQL server as an enterprise database product for fortune 500 companies as well as most of the mid to large field of companies. There may be a larger count of total SQL server installations out there, but oracle makes up more core data systems. The insinuation that SQL server is top dog and Oracle is just some tool we have to learn to deal with is plain laughable.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
  • You may post block code using <blockcode [type="language"]>...</blockcode> tags. You may also post inline code using <code [type="language"]>...</code> tags.

More information about formatting options