1. Mengajukan pertanyaan
Dalam proyek baru-baru ini, saya mengalami masalah dengan pengoperasian ASP pada tabel perpustakaan FoxPro (*.DBF). Kenyataannya memang banyak software aplikasi yang menggunakan tabel DBF. Cara menggunakan data tersebut dalam lingkungan jaringan membuat banyak teman bingung.
Saya juga memeriksa banyak informasi dan tidak dapat menemukan penjelasan rinci tentang solusinya. Setelah pengujian, saya awalnya memecahkan masalah ini dan akan membaginya dengan semua orang.
Artikel ini mencoba memecahkan masalah berikut:
1. ASP bergabung dengan tabel gratis (file *.dbf) yang dihasilkan oleh FoxPro
2. Simpan beberapa jenis file data dan grafik ke dalam tabel dbf secara bersamaan
(Contoh program tersedia dari Set conn = Server.CreateObject("ADODB.Connection")
connstr = "Driver={Driver Microsoft Visual FoxPro};SourceType=DBF;"&_
"SourceDB=" & Server.MapPath(db) &";Eksklusif=Tidak"
conn.Open connstr
Dalam kode di atas, data adalah jalur relatif tempat file DBF saya berada (relatif terhadap file tempat kode ini berada), dan diubah menjadi jalur absolut melalui Server.MapPath(db).
http://www.connectionstrings.com menyediakan string koneksi untuk berbagai jenis file tabel perpustakaan. Untuk file DBF, string koneksi yang diberikan adalah:
"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:mydbpath;"
Saya tidak berhasil terhubung menggunakan string koneksi ini dan tidak melakukan pengujian lebih lanjut. Teman-teman yang berminat dapat mencoba string di atas.
.www.downcodes.com
2. Deklarasikan nama tabel dalam pernyataan SQL
Anda dapat mendeklarasikan nama tabel yang akan dioperasikan dalam pernyataan SQL dalam bentuk [nama tabel] atau [nama tabel.ekstensi]. Misalnya, nama file tabel adalah t1.dbf, dan pernyataan SQL adalah:
pilih * dari [t1] atau pilih * dari [t1.dbf]
3. Operasi penyimpanan berbagai jenis data
DBF tidak mendukung banyak tipe data, di antaranya yang perlu diperhatikan adalah Tanggal (tipe tanggal), Memo (tipe catatan), dan Umum (tipe umum). Di sini kami fokus pada tipe data, tipe Memo dan Gen yang digunakan saat menyimpan file grafik, yang akan dijelaskan nanti.
Saya biasanya menggunakan dua metode untuk menulis operasi database, satu adalah dengan menggunakan pernyataan insert, dan yang lainnya adalah dengan menggunakan metode addnew. Untuk tabel DBF, kedua metode ini sedikit berbeda.
Saat menggunakan pernyataan sisipkan, perlu diketahui bahwa format penulisan data tipe Tanggal adalah {^yyyy-mm-dd}, dan pembatasnya berbeda dengan # Access dan 'SQL Server'. Pernyataan SQL spesifiknya adalah:
masukkan ke dalam nilai [t1.dbf] (nama, ulang tahun) ('Nama Saya',{^1970-1-1})
Saat menggunakan metode addnew, kode yang awalnya saya gunakan adalah:
rst.open "[t1]",conn,0,3
pertama.tambahkan baru
pertama(0).nilai = "NamaSaya"
pertama(1).nilai = {^1970-1-1}
pertama.perbarui
pertama.tutup
Tidak ada masalah saat mengoperasikan SQL Server dan Access, namun ada masalah saat mengoperasikan file DBF. Setelah bereksperimen, akhirnya saya menemukan metode yang tepat:
sql = "pilih * dari t1"
pertama.buka sql,sambung,0,3
pertama.tambahkan baru
pertama(0).nilai = "NamaSaya"
pertama(1).nilai = {^1970-1-1}
pertama.perbarui
rst.close
Harap dicatat bahwa perbedaan antara dua potongan kode di atas terutama terletak pada pernyataan SQL. Seperti disebutkan sebelumnya, dalam pernyataan SQL, Anda dapat mendeklarasikan file tabel dalam bentuk [nama tabel] atau [nama tabel.dbf], tetapi saat menggunakan metode addnew, nama tabel tidak boleh memiliki ekstensi dan tanda kurung siku tidak dapat ditambahkan, jika tidak maka akan muncul pesan "Bukan nama tabel yang sederhana, tidak dapat diperbarui".
4. Penyimpanan file grafik
Dalam tabel DBF, bidang memo dan umum dapat digunakan untuk menyimpan grafik, audio dan video, teks, dan file lainnya (lihat http://www.chinadesign.com.cn/NewsContents1.asp?id=2663 ). Di sini, kita menyetel tipe bidang ke memo(biner) (tipe persiapan biner), menggunakan metode pertama(n).AppendChunk() untuk menulis data biner gambar yang dihasilkan, dan menggunakan metode Response.BinaryWrite() untuk memulihkan biner data ke gambar. Ada banyak artikel terkait image warehousing, jadi saya tidak akan membahas detailnya di sini.
Sedangkan untuk penggunaan kolom General untuk menyimpan gambar, saya mencobanya, tetapi tidak berhasil, jadi saya tidak mencoba lagi.
5. Penghapusan data
Anda dapat menggunakan pernyataan hapus untuk menghapus data, tetapi ketika Anda membuka file tabel setelah penghapusan, Anda menemukan bahwa data hanya ditandai untuk dihapus dan tidak benar-benar dihapus dari tabel. Di Foxpro, gunakan perintah paket untuk menghapus data secara permanen. Setelah memeriksa beberapa informasi, dikatakan bahwa VB tidak dapat mengimplementasikan operasi paket, dan tentu saja VBS tidak dapat mengimplementasikannya. Solusi umumnya adalah dengan sesekali mengimpor data dalam tabel (tanpa tanda penghapusan) ke dalam tabel baru, menghapus tabel asli, lalu mengganti nama tabel baru menjadi nama tabel asli.
6. Data dan gambar disimpan dalam database secara bersamaan
Masalah ini tidak termasuk dalam cakupan artikel ini. Ada banyak artikel di Internet yang memberikan solusi.
Saya mengimplementasikan fungsi ini menggunakan program unggahan tanpa komponen "Huajing". Beberapa teman mungkin bertanya, unggahan "Huajing" ditulis sebagai file dan tidak ada cara untuk menyimpannya di database. Lumayan, tapi dengan sedikit perubahan, Anda bisa mendapatkan data biner dari gambar tersebut dan kemudian menyimpannya di database. Dalam contoh saya, perubahan dalam program lingkungan dikomentari, silakan rujuk.
4. Kesimpulan
Artikel ini terutama membahas pengoperasian ASP pada tabel bebas DBF. Jika itu adalah perpustakaan DBC, string koneksi yang sesuai diberikan dalam inc/conn.asp dalam contoh.
Pada titik ini, saya yakin teman-teman memiliki pemahaman umum tentang pengoperasian tabel DBF. Dikombinasikan dengan contoh saya, saya yakin Anda dapat mengembangkan lebih banyak fungsi.
SEMOGA BERUNTUNG!