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

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Welche Bibliotheken in GO werden von großen Unternehmen oder bekannten Open-Source-Projekten entwickelt? Bei der Programmierung in Go begegnen Entwickler häufig auf einige häufige Bedürfnisse, ...

Das Onblur-Ereignis, das die Avue-Crud-Reihenbearbeitung in der Avue-Komponentenbibliothek implementiert, löst die Avue-Crud-Komponente manuell aus. Es bietet bequeme Inline-Bearbeitungsfunktionen, aber manchmal müssen wir ...

GitePages statische Website -Bereitstellung fehlgeschlagen: 404 Fehlerbehebung und Auflösung bei der Verwendung von Gitee ...

Wie baue ich schnell eine Front-End-Seite in der Back-End-Entwicklung? Als Backend -Entwickler mit drei oder vier Jahren Erfahrung hat er das grundlegende JavaScript, CSS und HTML gemeistert ...

Über die Verwendung von PNPM anstelle von NPM, um eine React -Anwendung mit NPX zu erstellen ...

Erkennen Sie den Lückeneffekt des Karten -Gutschein -Layouts. Beim Entwerfen von Karten -Gutschein -Layout begegnen Sie häufig die Notwendigkeit, Lücken zu Karten -Gutscheinen hinzuzufügen, insbesondere wenn der Hintergrund Gradient ist ...

Webseiten -Automatisierung und numerische Berechnung: Implementierung basierend auf Browser -eingebetteten Skripten In diesem Artikel wird untersucht, wie Browser -eingebettete Skripte verwendet werden, um Webseitenelementvorgänge und -zahlen zu implementieren ...

So modifizieren und replays angeforderte Cookies in Chromedevtools mit Chrome effektiv ändern und wiederholen ...
