Mengekstrak Nama Lajur dalam Oracle: Panduan Komprehensif
JadualMySQL information_schema.COLUMNS
tidak dicerminkan secara langsung dalam Oracle. Artikel ini memperincikan cara untuk mendapatkan semula nama lajur daripada jadual Oracle 11g, menangani perbezaan skema dan ruang jadual serta menyerlahkan amalan terbaik keselamatan.
Penyelesaian Pertanyaan Oracle
Oracle menggunakan jadual USER_TAB_COLS
(atau ALL_TAB_COLS
untuk akses silang skema) untuk menyimpan metadata lajur. Untuk mengambil nama lajur daripada jadual 'pengguna', yang dimiliki oleh 'my_schema', tidak termasuk lajur yang ditentukan, gunakan pertanyaan ini:
<code class="language-sql">SELECT column_name FROM ALL_TAB_COLS WHERE table_name = 'USERS' AND owner = 'my_schema' AND column_name NOT IN ('PASSWORD', 'VERSION', 'ID')</code>
Menjelaskan Ruang Meja dan Skema
Adalah penting untuk memahami bahawa dalam Oracle, ruang jadual dan skema adalah konsep yang berbeza. Ruang meja ialah lokasi storan, manakala skema mewakili pemilikan dan struktur organisasi untuk objek pangkalan data. Ruang jadual tidak relevan apabila menanyakan nama lajur; hanya skema (pemilik) yang penting.
API Kriteria Hibernate (Tiada Setara HQL Langsung)
Walaupun setara HQL langsung tidak wujud, API Kriteria Hibernate menawarkan pendekatan yang setanding:
<code class="language-java">Criteria criteria = session.createCriteria(User.class); criteria.setProjection(Projections.property("columnName")); criteria.add(Restrictions.eq("tableName", "users")); criteria.add(Restrictions.in("columnName", new String[] {"name", "email"})); // Excludes columns</code>
Mencegah Kerentanan Suntikan SQL
Membenamkan nilai secara langsung ke dalam pertanyaan SQL adalah sangat berisiko. Sentiasa gunakan pernyataan yang disediakan atau pertanyaan berparameter untuk mencegah serangan suntikan SQL dan melindungi pangkalan data anda. Ini penting untuk sebarang pertanyaan dinamik yang mana nama jadual atau lajur dibekalkan pengguna.
Atas ialah kandungan terperinci Bagaimana cara mengekstrak nama lajur dari jadual Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!