Pada aplikasi database DELPHI biasanya kita mempunyai dua cara untuk mengakses database. Salah satunya adalah mencari melalui database BDE
mesin, yaitu menggunakan driver database yang disertakan dengan DELPHI. Keuntungan metode ini adalah cepat, namun cakupan penerapannya terbatas.
Ketika versi database diperbarui, mungkin tidak dapat mengoperasikan database baru, metode lain adalah melalui ODBC, yang memiliki kelebihan
Intinya bisa disediakan dengan sistem operasi (seperti WINDOWS) dan bisa diadaptasi ke berbagai database sebagai antarmuka standar. Dalam persiapan
Selama prosesnya, kita dapat memilih salah satu metode sesuai dengan kebutuhan kita.
Saat menggunakan ODBC untuk mengakses database, metode yang biasa dilakukan adalah menyiapkan sumber data sistem ODBC di panel manajemen ODBC.
(Sistem DSN), lalu atur alias basis data (Alias) di DBD atau di program yang sesuai dengan DSN, sehingga Anda dapat menggunakan
Basis data dapat dioperasikan dengan mudah. Saya yakin programmer yang pernah menggunakan DELPHI untuk melakukan aplikasi database sudah sangat familiar dengan aspek ini, dan saya tidak tahu banyak.
Dikatakan. Dalam aplikasi praktis, penulis pernah mengalami situasi seperti ini. Aplikasi database kami bergantung pada sumber data sistem ODBC.
Program aplikasi yang mengakses dan mengoperasikan database telah berjalan dengan baik hingga suatu saat, seseorang yang familiar dengan sistem WINDOWS namun belum familiar dengannya
Pengguna yang terlalu paham secara tidak sengaja mengubah atau menghapus DSN sistem prasetel kami...
Oleh karena itu, penulis mulai mempelajari cara mengatur secara dinamis konten DSN sistem ODBC dalam program tersebut, sehingga saya dapat meningkatkan program saya sendiri.
Pesanannya mantap. Setelah seharian meneliti registry WINDOWS, akhirnya saya menemukan rahasia setting DSN dengan manajer ODBC.
("Ada keadilan di langit dan bumi, dan usahamu akan selalu dihargai!" Ini bukan iklan!) Saya menulisnya untuk dibagikan kepada semua orang, dan saya juga meminta nasihat dari para ahli.
Rahasia DSN yang diset oleh program manajemen ODBC ada di registry. Jika tidak percaya, Anda bisa masuk ke HKEY_LOCAL_MACHINESoftwareODBC.
Coba lihat, pasti akan membuat Anda merasa sudah setengah jalan sukses.
Pertama, mari kita lihat driver database ODBC yang terinstal di sistem. di HKEY_LOCAL_MACHINESoftwareODBC
ODBCInst.INI menyimpan informasi tentang driver database ODBC yang diinstal. Dari sini Anda dapat memeriksa nomor ODBC yang diinstal.
Informasi seperti file DLL yang sesuai dengan driver database. Di setiap nilai kunci Driver ODBCInst.INIODBC, nama kuncinya adalah driver
Nama (seperti Microsoft access Driver (*.mdb)) dan nilai kuncinya adalah "Terpasang", yang menunjukkan bahwa driver telah diinstal. ada
ODBCInst.INIDriverName (DriverName adalah nama driver, seperti Microsoft Access Driver (*.mdb))
, ada informasi rinci tentang driver. Kami terutama memperoleh jalur dan nama file dari file DLL yang sesuai dengan driver ODBC dari sini
Nilai kunci dari nama kunci Driver umumnya adalah "C:WINDOWSSYSTEMFileName.DLL".
Kemudian lihat informasi registrasi sistem DSN. Di HKEY_LOCAL_MACHINESoftwareODBCODBC.INI, sistem disimpan
Informasi pendaftaran DSN, parameter DSN yang kami atur di panel manajemen ODBC ada di sini.
Mari kita lihat langkah-langkah membuat DSN sistem ODBC. Artinya, setelah kita menyelesaikan pengaturan parameter di panel manajemen ODBC, manajemen ODBC
Bagaimana cara program mendaftarkan informasi DSN di registri? Ambil contoh pembuatan sistem tipe Ms Access97 DSN bernama MyAccess.
Parameter yang kami tentukan terutama mencakup tipe database (Microsoft Access Driver (*.mdb)), nama sumber data (MyAccess),
Deskripsi sumber data (AKSES Saya), jalur basis data (C:InetpubwwwrootTest.mdb), parameter lain seperti nama pengguna,
Kata sandi pengguna, eksklusif, hanya-baca, database sistem, direktori default, ukuran buffer, jumlah baris pemindaian, batas waktu halaman, dll. gunakan sistem
Parameter bawaan. Pada saat ini, sistem registrasi DSN secara umum harus memiliki langkah-langkah sebagai berikut:
1. Tambahkan kunci string di Sumber Data HKEY_LOCAL_MACHINESoftwareODBCODBC.INIODBC
Nilainya adalah MyAccess = Microsoft Access Driver(*.mdb), dimana masing-masing nama sumber data dan tipe database.
Ini untuk mendaftarkan nama sistem DSN di registri.
2. Buat subkunci (SubKey) MyAccess di HKEY_LOCAL_MACHINESoftwareODBCODBC.INI, yaitu membuat
Buat kunci sebagai HKEY_LOCAL_MACHINESoftwareODBCODBC.INIMyAccess, lalu buat beberapa
Nilai kunci, yang menjelaskan informasi konfigurasi DSN sistem secara detail. Informasi utamanya adalah (isi dalam [] adalah komentar penulis):
DBQ=C:InetpubwwwrootTest.mdb [String, menunjukkan jalur database]
Description=AKSES Saya [string, mewakili deskripsi database]
Driver=C:PWIN98Systemodbcjt32.dll [String, menunjukkan driver, ODBCINST.INI terlihat]
DriverId=0x00000019(25) [Nomor yang menunjukkan identifikasi pengemudi, tidak dapat diubah]
FIL=Ms Access; [String, mungkin terkait dengan Filter]
SafeTransaction=0x00000000 [Angka, dapat menunjukkan jumlah operasi transaksional yang didukung]
UID="" [String, menunjukkan nama pengguna, ini string kosong]
3. Buat subkunci (SubKey)Mesin di HKEY_LOCAL_MACHINESoftwareODBCODBC.INIMyAccess,
Kemudian buat subkunci (SubKey)Jet di bawahnya, yaitu buat kunci sebagai
HKEY_LOCAL_MACHINESoftwareODBCODBC.INIMyAccessEnginesJet dan kemudian buat beberapa di bawahnya
Nilai kunci, yang menjelaskan secara rinci informasi konfigurasi mesin database suatu sistem DSN. Informasi utamanya adalah sebagai berikut (isi dalam [] adalah anotasi penulis):
ImplicitCommitSync=Ya [String, dapat menunjukkan apakah modifikasi data segera diterapkan]
MaxBufferSize=0x00000200(512) [angka yang menunjukkan ukuran buffer]
PageTimeout=0x00000005(5) [angka yang menunjukkan batas waktu halaman]
Threads=0x00000003(3) [angka, mungkin menunjukkan jumlah maksimum thread yang didukung]
UserCommitSync=Ya [String, dapat menunjukkan apakah modifikasi data akan segera diterapkan kepada pengguna]
Di atas adalah informasi dasar untuk membuat sistem DSN (informasi lain seperti opsi atau opsi lanjutan juga diatur di sini, tetapi karena defaultnya
informasi, tidak tercantum dalam registri), kami mengoperasikan registri sesuai dengan langkah-langkah di atas dalam program, dan juga dapat menambahkan DSN sistem atau mengubah konfigurasinya.
Pada contoh program berikut, sistem DSN akan dibuat sesuai dengan langkah di atas. Harap perhatikan komentar di program.
{******************************************************* ***
Dalam prosedur ini, sumber data sistem ODBC (DSN) akan dibuat,
Nama sumber data: MyAccess Deskripsi sumber data: Sumber data baru saya
Jenis basis data:ACCESS97
Basis data yang sesuai: C:Inetpubwwwroot est.mdb
******************************************************* * *****}
{Perhatikan bahwa Registri harus disertakan dalam pernyataan USES}
Prosedur TForm1.Button1Click(Pengirim: TObject);
var
registerTemp : TRegistry;
bData : array[ 0..0 ] byte;
mulai
registerTemp := TRegistry.Create; //Buat instance Registri
dengan registerTemp lakukan
mulai
RootKey:=HKEY_LOCAL_MACHINE;//Setel nilai kunci root ke HKEY_LOCAL_MACHINE
//Temukan Sumber Data SoftwareODBCODBC.INIODBC
jika OpenKey('Sumber Data SoftwareODBCODBC.INIODBC', Benar) lalu
mulai //Daftarkan nama DSN
WriteString( 'Akses Saya', 'Driver Microsoft Access (*.mdb)' );
akhir
kalau tidak
mulai//Gagal membuat nilai kunci
memo1.lines.add('Gagal menambahkan sumber data ODBC');
KELUAR;
akhir;
Tutup Kunci;
//Temukan atau buat SoftwareODBCODBC.INIMyAccess dan tulis informasi konfigurasi DSN
jika OpenKey('SoftwareODBCODBC.INIMyAccess',True) lalu
mulai
WriteString( 'DBQ', 'C:inetpubwwwroot est.mdb' );//Direktori basis data
WriteString( 'Deskripsi', 'Sumber data baru saya' );//Deskripsi sumber data
WriteString( 'Pengemudi', 'C:PWIN98SYSTEModbcjt32.dll' );//Berkas DLL pengandar
WriteInteger( 'DriverId', 25 );//ID Driver
WriteString( 'FIL', 'Ms Access;' );//Filter dasar
WriteInteger( 'SafeTransaction', 0 );//Jumlah operasi transaksi yang didukung
WriteString( 'UID', ' );//Nama pengguna
bData[0] := 0;
WriteBinaryData( 'Eksklusif', bData, 1 );//Mode non-eksklusif
WriteBinaryData( 'ReadOnly', bData, 1 );//Mode non-baca saja
akhir
else//Gagal membuat nilai kunci
mulai
memo1.lines.add('Gagal menambahkan sumber data ODBC');
KELUAR;
akhir;
Tutup Kunci;
//Temukan atau buat SoftwareODBCODBC.INIMyAccessEnginesJet
//Menulis informasi konfigurasi mesin basis data DSN
jika OpenKey('SoftwareODBCODBC.INIMyAccessEnginesJet',True) maka
mulai
WriteString('ImplicitCommitSync', 'Ya' );
WriteInteger( 'MaxBufferSize', 512 );//Ukuran buffer
WriteInteger( 'Waktu Halaman Habis', 10 ); //Waktu halaman habis
WriteInteger( 'Threads', 3 );//Jumlah thread yang didukung
WriteString('UserCommitSync', 'Ya' );
akhir
else//Gagal membuat nilai kunci
mulai
memo1.lines.add('Gagal menambahkan sumber data ODBC');
KELUAR;
akhir;
Tutup Kunci;
memo1.lines.add('Berhasil menambahkan sumber data ODBC baru');
Bebas;
akhir;
akhir;
Program di atas telah di-debug dan diteruskan di bawah PWIN98+DELPHI3.0.
Berikut informasi yang perlu diset untuk membuat DSN tipe database umum ([] adalah isi komentar, kecuali komentar khusus, masing-masing parameter dapat dilihat pada uraian sebelumnya):
1. Akses(Microsoft Access Driver(*.mdb))
DBQ, Deskripsi, Driver[odbcjt32.dll], DriverID[25], FIL[Ms Access;],
SafeTransaction[defaultnya adalah 0], UID[defaultnya kosong],
EnginesJetImplicitCommitSync[defaultnya adalah Ya], EnginesJetMaxBufferSize[default 512],
EnginesJetPageTimeout[standarnya adalah 512], EnginesJetThreads[standarnya adalah 3],
EnginesJetUserCommitSync [default Ya]
Pengaturan opsional: SystemDb[string, jalur ke database sistem],
ReadOnly[biner, apakah akan dibuka dalam mode read-only, 1 berarti ya, defaultnya adalah 0],
Eksklusif[biner, apakah akan dibuka dalam mode eksklusif, 1 berarti ya, defaultnya adalah 0],
PWD [string, kata sandi pengguna]
2. Excel(Pengandar Microsoft Excel(*.xls))
DBQ[Excel97(=pathxxx.xls), 5.0/7.0(=pathxxx.xls), 4.0(=path), 3.0(=path)],
Deskripsi, Pengemudi[odbcjt32.dll],
DefaultDir[Excel97(<>DBQ),5.0/7.0(<>DBQ),4.0(=DBQ),3.0(=DBQ)],
ID Pengemudi[790(Excel97), 22(5.0/7.0), 278(4.0), 534(3.0)],
FIL[Excel5.0;], ReadOnly, SafeTransaction, UID,
EnginesExcelImplicitCommitSync, EnginesExcelMaxScanRows[jumlah, jumlah baris yang dipindai, defaultnya adalah 8],
MesinExcelThreads, MesinExcelUserCommitSync,
EnginesExcelFirstRowHasName[biner, apakah baris pertama adalah nama domain, 1 berarti ya, defaultnya adalah 1]
Catatan: DBQ Excel97 dan Excel7.0/5.0 berhubungan dengan file XLS, sedangkan Excel4.0 dan Excel3.0 berhubungan dengan direktori;
DefaultDir berhubungan dengan direktori, yang merupakan jalur yang berhubungan dengan DBQ di Excel97 dan Excel7.0/5.0.
Ini sama dengan DBQ di Excel4.0 dan Excel3.0; DriverID setiap versi berbeda.
3. dBase(Pengandar Microsoft dBase(*.dbf))
DefaultDir[string, direktori tempat file database berada], Deskripsi, Driver[odbcjt32.dll],
DriverID[277(IV), 533(5.0)], FIL[dbase III;], SafeTransaction, UID,
MesinXbaseImplicitCommitSync,
EnginesXbaseCollating[String, basis pengurutan, dapat berupa ASCII, Internasional, Norwegia-Denmark,
Swedia-Finlandia],
EnginesXbaseDeleted[biner, apakah tidak akan menampilkan catatan yang dihapus sementara, 0 berarti menampilkan, defaultnya adalah 1],
EnginesXbasePageTimeout[standarnya adalah 600], EnginesXbaseUserCommitSync,
EnginesXbaseThreads, EnginesXbaseStatistics [biner, apakah akan menggunakan perkiraan jumlah baris, 1 adalah ya, default 0]
Catatan: (DriverId kedua versi dBaseIV dan dBase5.0 berbeda)
4. Foxpro(Pengandar Microsoft Foxpro(*.dbf))
DefaultDir[direktori tempat file database berada], Deskripsi, Driver[odbcjt32.dll],
DriverID[536(2.6), 280(2.5)], FIL[Foxpro 2.0;], Transaksi Aman, UID,
EnginesXbaseCollating[String, basis pengurutan, bisa ASCII, Internasional],
EnginesXbaseDeleted[biner, apakah tidak akan menampilkan catatan yang dihapus sementara, 0 berarti menampilkan, defaultnya adalah 1],
EnginesXbasePageTimeout[standarnya adalah 600], EnginesXbaseUserCommitSync,
EnginesXbaseThreads, EnginesXbaseStatistics [biner, apakah akan menggunakan perkiraan jumlah baris, 1 adalah ya, default 0]
Catatan: (DriverId Foxpro2.5 dan Foxpro2.6 berbeda)
Jadikan program di atas menjadi kontrol COM atau ActiveX, yang dapat digunakan di banyak bahasa pemrograman tingkat tinggi seperti DELPHI, C++Buider, VB, VC, dan PB.