INFO: Visual Basic mengakses Database Oracle menggunakan ADO

ID Artikel: 176936 - Melihat produk di mana artikel ini berlaku.
Untuk Microsoft Visual Basic.NET versi artikel ini, lihat 308071.
Perbesar semua | Perkecil semua

RINGKASAN

Dengan Visual Basic dan ADO, Anda memiliki kemampuan untuk menghubungkan ke Oracle database melalui sambungan DSN-kurang, melaksanakan prosedur yang disimpan menggunakan parameter, dan mendapatkan kembali nilai-nilai dari prosedur yang tersimpan. The contoh dalam artikel ini menggambarkan semua fungsi ini.

INFORMASI LEBIH LANJUT

Untuk menjalankan kode contoh dalam artikel ini, Anda mungkin perlu untuk men-download dan menginstal komponen akses Data Microsoft jika Anda menggunakan Visual Basic 5.0. MDAC komponen terletak di:http://MSDN.Microsoft.com/en-US/data/aa937729.aspxContoh berikut dibuat terhadap database Oracle 7.3 melalui SQL * Net 2.3 sambungan. Semua kode berikut (termasuk yang disimpan prosedur) harus bekerja baik-baik saja dengan Oracle 7,2. Namun, Microsoft ODBC Driver untuk Oracle membantu file menyatakan bahwa hanya mendukung SQL * Net 2.3.

Ada dua objek yang perlu dibuat pada Oracle database; a tabel (adooracle) dan prosedur yang disimpan (adoinsert).

CATATAN: Jika Anda telah bekerja melalui artikel Basis Pengetahuan Microsoft berikut, maka Anda dapat menggunakan Oracle benda-benda diciptakan dalam artikel ini (rdooracle dan rdoinsert). Hanya mengubah kode Visual Basic di bawah ini sesuai:

167225 HOWTO: Mengakses Database Oracle menggunakan RDO
Berikut adalah script bahasa (DDL) definisi data untuk membuat ini objek:

ADOORACLE - ini adalah hanya dua kolom tabel dengan kolom pertama ditetapkan sebagai tombol utama:

      CREATE TABLE adooracle (
            item_number    NUMBER(3) PRIMARY KEY,
            depot_number   NUMBER(3));
				


ADOINSERT - prosedur ini menerima satu parameter masukan angka dan mengembalikan output numerik tunggal parameter. Input parameter pertama digunakan oleh pernyataan masukan, kemudian dibagi oleh 2 dan ditetapkan sebagai output parameter:


      CREATE OR REPLACE PROCEDURE adoinsert (
            insnum IN NUMBER, outnum OUT NUMBER)
      IS
      BEGIN
        INSERT INTO adooracle
          (Item_Number, Depot_Number)
        VALUES
          (insnum, 16);
        outnum := insnum/2;
      END;
      / 
				

Dalam SQL 3.3, menggunakan foward garis miring (/) untuk mengakhiri dan menjalankan script yang menyatakan prosedur yang tersimpan.

CATATAN: Anda harus menggunakan prosedur yang memiliki output parameter dan tidak fungsi ketika bekerja dengan Oracle dan ADO parameter.

Skrip sebelumnya dapat dijalankan dari SQL * Plus. Setelah objek ini telah dibuat, Anda dapat membuat proyek Visual Basic yang akan menggunakannya.

Proyek sampel ini menggunakan formulir sederhana untuk mengirim mengikat parameter untuk ADOINSERT disimpan prosedur dan kemudian kembali output parameter dari yang prosedur. Berikut adalah langkah-langkah untuk membuat proyek:

  1. Buka proyek baru dalam Visual Basic dan menambahkan referensi ke perpustakaan objek Data ActiveX Microsoft.
  2. Menempatkan kontrol berikut pada formulir:
    
       Control      Name      Text/Caption
    
       Button      cmdCheck    Check
       Button      cmdSend     Send
       Text Box    txtInput
       Label       lblInput    Input:
    
    						
  3. Dari menu alat, pilih pilihan, klik Opsi "Default modul tampilan penuh", dan kemudian klik OK. Hal ini memungkinkan Anda untuk melihat semua kode untuk proyek ini.
  4. Paste kode berikut ke dalam jendela kode Anda:
    
        Option Explicit
        Dim Cn As ADODB.Connection
        Dim CPw1 As ADODB.Command
        Dim CPw2 As ADODB.Command
        Dim Rs As ADODB.Recordset
        Dim Conn As String
        Dim QSQL As String
    
        Private Sub cmdCheck_Click()
    
          CPw1(0) = Val(txtInput.Text)
    
          Set Rs = CPw1.Execute
    
          MsgBox "Item_Number = " & Rs(0) & ".  Depot_Number = " & Rs(1) & "."
    
          Rs.Close
    
        End Sub
    
        Private Sub cmdSend_Click()
    
           CPw2(0) = Val(txtInput.Text)
    
           CPw2.Execute
    
           MsgBox "Return value from stored procedure is " & CPw2(1) & "."
    
        End Sub
    
        Private Sub Form_Load()
    
           'You will need to replace the "*" with the appropriate values.
           Conn = "UID=*****;PWD=****;DRIVER={Microsoft ODBC for Oracle};" _
                & "SERVER=*****;"
    
           Set Cn = New ADODB.Connection
    
           With Cn
             .ConnectionString = Conn
             .CursorLocation = adUseClient
             .Open
           End With
    
           QSQL = "Select Item_Number, Depot_Number From adooracle Where " _
           & "item_number = ?"
    
           Set CPw1 = New ADODB.Command
    
           With CPw1
             .ActiveConnection = Cn
             .CommandText = QSQL
             .CommandType = adCmdText
             .Parameters.Append .CreateParameter(, adInteger, adParamInput)
           End With
    
           QSQL = "adoinsert"
    
           Set CPw2 = New ADODB.Command
    
           With CPw2
             .ActiveConnection = Cn
             .CommandText = QSQL
             .CommandType = adCmdStoredProc
             .Parameters.Append .CreateParameter(, adInteger, adParamInput)
             .Parameters.Append .CreateParameter(, adDouble, adParamOutput)
           End With
    
        End Sub
    
        Private Sub Form_Unload(Cancel As Integer)
    
           Cn.Close
           Set Cn = Nothing
           Set CPw1 = Nothing
           Set CPw2 = Nothing
    
        End Sub
    
    					
  5. Menjalankan proyek.
Ketika Anda memasukkan nomor kotak teks, txtInput, dan klik Kirim tombol, Oracle disimpan prosedur, ADOINSERT, disebut. Nomor yang Anda masukkan dalam teks kotak digunakan sebagai input parameter untuk prosedur. Output parameter digunakan dalam kotak pesan yang disebut setelah disimpan prosedur selesai pengolahan. Dengan nilai asli Anda masih dalam kotak teks, klik tombol "Check". Ini menciptakan sederhana hanya-baca resultset yang ditampilkan dalam kotak pesan lain.

Berikut adalah penjelasan rinci kode yang digunakan dalam hal ini demonstrasi proyek.

Acara Form_Load berisi kode yang menciptakan DSN-kurang sambungan:

Conn = "UID=<uid>;PWD=<pwd>;DRIVER={Microsoft ODBC for Oracle};" _
           & "SERVER=<MyServer>;"

   Set Cn = New ADODB.Connection

   With Cn
       .ConnectionString = Conn
       .CursorLocation = adUseClient
       .Open
   End With

				
Setelah Anda membuat objek sambungan ADO (Cn), Anda menetapkan beberapa dari yang parameter menggunakan dengan pernyataan.

Hubungkan string yang digunakan untuk membuka koneksi ke database Oracle (atau database hal) adalah sangat tergantung pada ODBC mendasari driver. Anda dapat melihat dalam string connect di bawah Microsoft Oracle driver Anda menggunakan bernama khusus oleh DRIVER =:

Conn = "UID=<uid>;PWD=<pwd>;DRIVER={Microsoft ODBC for Oracle};" _
           & "SERVER==<MyServer>;"

				
Yang paling penting bagian dari string connect ini adalah "SERVER" kata kunci. The string yang ditugaskan ke SERVER adalah Alias Database yang Anda tetapkan dalam SQL * bersih. Ini adalah satu-satunya perbedaan dalam connect string saat menghubungkan ke database Oracle. Untuk koneksi DSN-kurang, seperti yang dinyatakan dalam bantuan file, Anda tidak menentukan DSN dalam connect string.

Juga di Form_Load acara adalah kode yang menciptakan dua perintah ADO benda-benda yang digunakan dalam proyek:

QSQL = "Select Item_Number, Depot_Number From adooracle Where " _
   & "item_number = ?"

   Set CPw1 = New ADODB.Command

   With CPw1
       .ActiveConnection = Cn
       .CommandText = QSQL
       .CommandType = adCmdText
       .Parameters.Append .CreateParameter(, adInteger, adParamInput)
   End With

   QSQL = "adoinsert"

   Set CPw2 = New ADODB.Command

   With CPw2
       .ActiveConnection = Cn
       .CommandText = QSQL
       .CommandType = adCmdStoredProc
       .Parameters.Append .CreateParameter(, adInteger, adParamInput)
       .Parameters.Append .CreateParameter(, adDouble, adParamOutput)
   End With
				
Objek perintah pertama (CPw1) adalah permintaan parameterized sederhana. The CommandText memiliki satu parameter yang item_number untuk mana klausa. Perhatikan bahwa CommandType diatur ke adCmdText. Ini berbeda dari adCmdStoredProc CommandType di objek perintah kedua (CPw2). Berikut ini adalah dari ADO membantu HTML file:
"Menggunakan properti CommandType untuk mengoptimalkan evaluasi CommandText properti. Jika nilai properti CommandType sama dengan adCmdUnknown ( nilai default), Anda mungkin mengalami berkurang kinerja karena ADO harus membuat panggilan ke penyedia untuk menentukan apakah properti CommandText Pernyataan SQL, prosedur yang disimpan atau nama tabel. Jika Anda tahu apa jenis perintah Anda menggunakan, pengaturan properti CommandType memerintahkan ADO untuk pergi langsung ke kode yang relevan. Jika properti CommandType tidak sesuai dengan jenis perintah di properti CommandText, kesalahan terjadi ketika Anda memanggil metode Execute."
Menggunakan dengan perintah, Anda dapat membuat dan menambahkan parameter ke perintah objek dengan mudah. Parameter pertama fungsi CreateParameter untuk Nama parameter. Ini telah dibiarkan kosong karena sampel program menggunakan indeks koleksi parameter untuk mengidentifikasi individu parameter (seperti CPw1(0) untuk mengidentifikasi parameter pertama). Program sampel menggunakan adInteger dan adDouble datatypes. Jika ini digunakan panjang variabel datatype, maka parameter ukuran CreateParameter fungsi harus ditetapkan. Sekali lagi, dari ADO membantu HTML:
"Jika Anda menentukan tipe data panjang variabel dalam jenis argumen, Anda harus baik lewat argumen ukuran atau mengatur ukuran properti parameter objek sebelum menambahkan ke parameter koleksi; Jika tidak, terjadi kesalahan."
Sisa proyek cukup sederhana dan terdokumentasi dengan baik dalam kedua berkas Bantuan Online dan buku Online yang datang dengan Visual Basic. ADO isu-isu yang sangat penting untuk bekerja dengan Oracle (connect string dan panggilan disimpan prosedur) telah diperincikan dalam hal ini proyek.

REFERENSI

Untuk informasi lebih lanjut tentang masalah ini, silakan berkonsultasi dengan Oracle SQL * Net 2.3 dokumentasi, file bantuan untuk Microsoft ODBC Driver untuk Oracle, ADO HTML yang datang dengan MDAC, buku Online yang datang dengan Visual Basic 6.0 atau dokumentasi server Oracle 7 Anda.

Pengandar Microsoft ODBC Oracle berkas Bantuan

ADO bantuan HTML

"Oracle PL/SQL pemrograman" oleh Steven Feuerstein

"Hitchhiker's Guide to & Visual Basic SQL Server" oleh William Vaughn, kelima Edisi

Untuk informasi tambahan, silakan lihat artikel berikut di Basis Pengetahuan Microsoft:
174679 HOWTO: Mengambil Resultsets dari Oracle disimpan prosedur

175018 HOWTO: Mendapatkan dan menginstal pengandar ODBC Microsoft Oracle

174981 HOWTO: Mengambil Resultsets khas dari Oracle disimpan prosedur

167225 HOWTO: Mengakses Database Oracle menggunakan RDO

176086 HOWTO: Mengambil Recordsets dari Oracle disimpan Procs menggunakan ADO

Properti

ID Artikel: 176936 - Kajian Terakhir: 16 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft ActiveX Data Objects 2.7
Kata kunci: 
kbdatabase kbinfo kboracle kbstoredproc kbmt KB176936 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:176936

Berikan Masukan