Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Java dan SQL :kembalikan null atau lempar pengecualian?

Saya akan menghindari

. berikut
   sql.append("SELECT * FROM ").append("dogs_table");
   sql.append(" WHERE ").append(colName).append("='");
                        sql.append(colValue).append("'");

dan sebagai gantinya gunakan PreparedStatement dengan metode penyetel parameter terkaitnya (setString() ) dll. Ini akan mencegah masalah dengan nilai untuk colValue memiliki tanda kutip, dan serangan injeksi SQL (atau lebih umum, colValue membentuk beberapa sintaks SQL).

Saya tidak akan tidak pernah kembalikan null jika koleksinya hanya kosong. Tampaknya sangat kontra-intuitif, dan sama sekali tidak terduga dari sudut pandang klien.

Saya tidak akan merekomendasikan mengembalikan nol dalam kondisi kesalahan, karena klien Anda harus secara eksplisit memeriksa ini (dan mungkin akan lupa). Saya akan mengembalikan koleksi kosong jika perlu (ini mungkin analog dengan komentar Anda tentang objek nol), atau lebih mungkin melemparkan pengecualian (tergantung pada keadaan dan tingkat keparahannya). Pengecualian berguna karena akan membawa beberapa informasi yang berkaitan dengan kesalahan yang dihadapi. Null tidak memberi tahu Anda apa pun.

Apa yang harus Anda lakukan jika mengalami masalah saat membangun Dog objek? Saya pikir itu tergantung pada seberapa kuat dan tangguh aplikasi yang Anda inginkan. Apakah masalah untuk mengembalikan subset dari Dog s, atau apakah itu benar-benar bencana dan Anda perlu melaporkan ini? Itu adalah persyaratan aplikasi (saya harus memenuhi salah satu skenario di masa lalu - upaya terbaik atau semua atau tidak sama sekali ).

Beberapa pengamatan. Saya akan menggunakan HashMap daripada Hashtable yang lama (disinkronkan untuk semua akses dan , yang lebih penting, bukan Collection yang tepat - jika Anda memiliki Collection Anda dapat meneruskannya ke metode lain yang mengharapkan apa saja Collection ), dan StringBuilder melalui StringBuffer untuk alasan serupa. Bukan masalah besar, tapi perlu diketahui.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Mengapa skor selalu 1 di Fulltext?

  2. Hapus data dari mysql dan angular

  3. KONDISI MASUKKAN KE MySQL - DI MANA TIDAK ADA

  4. Menyimpan datetime sebagai UTC di PHP/MySQL

  5. Bagaimana cara mengubah DateTime menjadi angka di MySQL?