JDBC操作技巧
对于纯JDBC连接数据库连接工具如下: public static final String DBDRIVER=com.microsoft.sqlserver.jdbc.SQLServerDriver; public static final String DBURL=jdbc:sqlserver://10.81.35.35:1433;databaseName=Company; public static final String DBUSER
对于纯JDBC连接数据库连接工具如下:
public static final String DBDRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver"; public static final String DBURL="jdbc:sqlserver://10.81.35.35:1433;databaseName=Company"; public static final String DBUSERNAMW="sa"; public static final String DBPSD="1111111"; private Connection conn=null; public DataBaseConnection(){ try{ Class.forName(DBDRIVER); conn=DriverManager.getConnection(DBURL,DBUSERNAMW,DBPSD); }catch(Exception e){ e.printStackTrace(); } } public Connection getConnection(){ return this.conn ; } public void close() throws SQLException{ if(this.conn!=null){ conn.close(); } }
然后我们便是采用PreparedStatement对SQL语句进行预处理,如下:
PreparedStatement pstm = null; String sql = "insert into Person(UserName,Password) values(?,?)"; try { pstm = this.conn.prepareStatement(sql); pstm.setString(1, person.getUserName()); pstm.setString(2, person.getPassword()); int count = pstm.executeUpdate(); if (count > 0) { flag = true; } } catch (Exception e) { throw e; } finally { try { pstm.close(); } catch (Exception e) { } }
这是我们最常用的一种操作方式,可是问题就来了,我们所要操作的,必须对sql中的字段很明确,比如我们按条件来查询的时候,我们就必须对条件的字段很清楚,可是,当数据库字段增多的时候,我们所要查询的条件规则很多,是不是每一个条件,我们就要写一个方法呢?显然,这种是直接的思维,然而这样思维却增加了很多代码的冗余,又或者说是,每次变换条件或者新增条件的时候,我们都必须对方法进行修改,甚至是增加。于是乎,我们想有没有一种方式可以传递字段名称进去查询,如where ?=?
本人亲测,这种方式是不存在的,因为预处理字段的时候,PreparedStatement会自动在字符串上加引号,那此时就不能达到我们想要的效果(如想要的是where name=? 得到的却是 where 'name'=?),本人曾经在这样的问题上纠结了很久。最终找到一种破解的方式,这里借鉴了IBatis的Map传参方式。希望同行爱好者,我们除了要学会使用框架或插件,得找个时间去研究一下它的原理(源码)哦。
对于where ?=? 显然是不可取,但是对于字符串占位就可以的。例子如下:
public List<person> findByParams(Map<string object> params) throws Exception { Iterator it = params.entrySet().iterator(); List<person> list = new ArrayList<person>(); Person person = null; String key = null; Object value = null; PreparedStatement pstm = null; while (it.hasNext()) { Map.Entry<string object> entry = (Map.Entry<string object>) it .next(); key = entry.getKey(); value = entry.getValue(); } <span style="color:#FF0000;"> String sql = String.format( "select userid,username,password from person where %s=?", key);</span> pstm = this.conn.prepareStatement(sql); pstm.setObject(1, value); ResultSet rs = pstm.executeQuery(); while(rs.next()) { person = new Person(); person.setUserID(rs.getInt(1)); person.setUserName(rs.getString(2)); person.setPassword(rs.getString(3)); } rs.close(); pstm.close(); return list; }</string></string></person></person></string></person>
哈哈 此种方式可以替代where ?=?,参照ibatis

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Perpustakaan mana yang dibangunkan oleh syarikat besar atau projek sumber terbuka yang terkenal? Semasa pengaturcaraan di GO, pemaju sering menghadapi beberapa keperluan biasa, ...

Acara Onblur yang melaksanakan penyuntingan baris Avue-Crud di Perpustakaan Komponen Avue secara manual mencetuskan komponen Avue-Crud. Ia menyediakan fungsi penyuntingan dalam talian yang mudah, tetapi kadang-kadang kita perlu ...

Giteepages Statik Laman Web Penggunaan Gagal: 404 Penyelesaian Masalah dan Resolusi Ralat Semasa Menggunakan Gitee ...

Bagaimana dengan cepat membina halaman front-end dalam pembangunan back-end? Sebagai pemaju backend dengan tiga atau empat tahun pengalaman, dia telah menguasai asas JavaScript, CSS dan HTML ...

Mengenai menggunakan PNPM dan bukannya NPM untuk membuat aplikasi React menggunakan NPX ...

Menyedari kesan jurang susun atur kupon kad. Semasa merancang susun atur kupon kad, anda sering menemui keperluan untuk menambah jurang pada kupon kad, terutamanya apabila latar belakang adalah gradien ...

Automasi laman web dan pengiraan berangka: pelaksanaan berdasarkan skrip tertanam penyemak imbas Artikel ini akan meneroka cara menggunakan skrip tertanam penyemak imbas untuk melaksanakan operasi dan nombor halaman laman web ...

Cara mengubahsuai dan memainkan semula kuki yang diminta dengan berkesan di Chromedevtools menggunakan Chrome ...
