Saya telah menggunakan ORACLE9i dan Oracle8 sejak lama. Saya telah menuliskan masalah-masalah yang perlu diperhatikan saat menggunakan JSP di sini hanya untuk referensi Anda.
1. Cara menangani Clob dan BLOB tipe besar.CLOB
dapat digunakan untuk menyimpan data teks berukuran besar, dan dapat menyimpan data hingga 4GB.Ini relatif umum dalam pengembangan aplikasi Ini menyediakan dua metode untuk membaca Dapatkan data Clob:
Metode getCharacterStream() mengembalikan aliran input yang dikodekan secara unicode (objek Java.io.Reader).
Metode getAsciiStream() mengembalikan aliran input yang dikodekan ASCII (java.io.Reader). io.InputStream objek).
Jadi jika Anda memiliki Jika Anda boleh menyimpan karakter Cina, Anda harus menggunakan metode sebelumnya.
Sekarang berikan contoh praktis dan izinkan saya mempelajari cara menggunakan CLOB langkah demi langkah.
Pertama, buat tabel dengan bidang CLOB:
buat tes tabel (id INTEGER, content clob);
Selanjutnya, kita masukkan record ke dalam tabel ini melalui JSP, lalu dapatkan dan tampilkan.
Operasi penyisipan:
Hal-hal berikut yang perlu diperhatikan adalah:
1) Data tipe clob tidak dapat langsung disisipkan, dan harus diberikan terlebih dahulu melalui metode blank_clob(). Ini mengalokasikan pencari lokasi (dengan cara yang sama, gunakan fungsi kosong_blob() untuk mengalokasikan pencari lokasi untuk blob). tetapi kumpulan hasil tidak kosong), dapatkan objek Clob, dan modifikasi konten objek agar sesuai dengan kebutuhan kita, lalu rekaman baris diperbarui melalui metode pembaruan.
2) Saat memodifikasi rekaman yang berisi tipe lob melalui pemilihan, baris harus dikunci (diimplementasikan melalui kata kunci untuk pembaruan), jika tidak, Oracle akan melaporkan kesalahan.
3) Hanya Jika catatan yang dimasukkan dipilih untuk diperbarui, kesalahan "pelanggaran urutan membaca" Solusinya adalah dengan mengatur otomatis fungsi penyerahan ke false, yaitu penyerahan otomatis tidak diperbolehkan, lalu komit, lalu pilih. Ini adalah fungsi baris //* di atas dalam kode
ini database dan menampilkannya:
2. Masalah pengkodean
Karena pengembang JAVA adalah orang asing, dukungan mereka untuk bahasa Mandarin tidak terlalu bagus. Oke, ini membuat banyak dari kita pusing, itulah yang kita bicarakan tentang karakter Cina pengkodean. Saya tidak akan menjelaskan secara rinci tentang beberapa spesifikasi pengkodean karakter Cina. Saya terutama akan berbicara tentang cara terhubung ke database Oracle.
1. Pertanyaan berbahasa Mandarin yang dimasukkan ke dalam database harus diubah menjadi pengkodean.
2.
Pertanyaan berbahasa Mandarin yang dibaca dari database harus diubah menjadi pengkodean.
//ECov.java import java.io.UnsupportedEncodingException; ECov kelas publik { String statis publik asc2gb(String asc){ string kembali; if(asc==null)kembalikan asc; mencoba{ ret=String baru(asc.getBytes("ISO8859_1"),"GB2312"); } tangkapan(Tidak DidukungEncodingException e){ ret=asc; } kembali mundur; } String statis publik gb2asc(String gb){ string kembali; if(gb==null)mengembalikan gb; mencoba{ ret=String baru(gb.getBytes("GB2312"),"ISO8859_1"); } tangkapan(Tidak DidukungEncodingException e){ ret=gb; } kembali mundur; } publik statis int byte2int(byte b){ kembali ((-1)>>>>24)&b; } } |
Sebenarnya maksud dari kode ini adalah menggabungkan kedua metode menjadi satu.
ECov.gb2asc(arg) harus digunakan saat memasukkan ke dalam database, dan ECov.asc2gb(arg) harus digunakan saat membaca. Poin paling kritisnya adalah Oracle sepertinya hanya mengenali pengkodean format ISO8859_1 (hanya ide saya).
3. Beberapa detail kecil
1. Ini adalah setAutoCommit(true atau false), yang merupakan fungsi commit() yang umum digunakan di sqlPlus. Jika Anda menggunakan true, jangan gunakan commit(), jika tidak, Anda akan tetap menggunakan metode commit() .
2. Pemrosesan tipe tanggal sebenarnya tidak sesederhana setDate() dan getDate() seperti yang dibayangkan. Anda akan merasa sangat menyenangkan jika Anda men-debugnya sendiri.
3. Yang terbaik adalah menggunakan teknologi kumpulan koneksi dalam database. Ini adalah metode yang baik untuk menggunakan lingkungan J2EE standar dan teknologi JNDI sederhana.