Ich werde nicht viel Unsinn sagen, ich werde Ihnen die gemeinsamen Verbindungsprobleme von Java -Betriebs -SQL -Datenbanken mit Ihnen mitteilen.
1. Verbinden, Abfragen, Update, Schließen
Diese grundlegenden Datenoperationen werden in ein Tool-ähnliches Modell zusammengestellt und geschrieben, das Modell2-Modell SQL-Tool. Ich wollte ursprünglich andere Operationen hinzufügen, wie z. B. Transaktionsverarbeitung, aber ich habe noch nicht an eine perfektere Methode gedacht. Bitte schauen Sie sich den Code im Detail an. Die Kommentare sind sehr detailliert.
Java.sql. "oracle.jdbc.driver.OracleDriver";String url = "jdbc:oracle:thin:@localhost:1521:orcl";String userName = "SCOTT";String password = "123456";/*** Initialize the connection and get conn*/public SQLBean(){try {Class.forName(driverName);conn = TriverManager.getConnection (URL, Benutzername, Passwort);} catch (classNotFoundException e) {e.printstacktrace (); System.err.println ("Datenbankverbindungsausnahme");} catch (SQLEXTECCECTE E) {E.printstacktrace (); fehlende* // *** Datenbank -Aktualisierungsfunktion erstellen* @param SQL Korrespondierende Aktualisierung SQL Anweisung* @param Parameter Zusätzliche Parameter erforderlich* @return true update erfolgreiche falsche Update fehlgeschlagen*/public boolean update (String sql, String [] params) {int k = 0; try {ps = con.parestatement (sql); ps.SetString (i+1, params [i]);} k = ps.executeUpdate ();} catch (sqlexception e) {e.printstacktrace (); System.err.println ("Datenbank -Update -Ausnahme");} return k> 0? True: false;}/*** Database -Zeichen für @PARAM SPARAM @PARAM @PARAM @PARAM @PARAM SWERS @PARAM SWERS @PARAM SWER SWERS. Parameter* @return Query Ergebnis Set*/public resultset query (String SQL, String [] Params) {try {ps = conn.preparestatement (SQL); für (int i = 0; i <paramsgth; i ++) {ps.setSting (i+1, params [i]);} rs = ps.Execute (); {e.printstacktrace (); System.err.println ("Datenbankabfrage -Ausnahme");} return rs;}/*** Datenbankanweisung schließen*/public void close () {try {if (rs! = null) rs.close (); rs = null; if (ps! = null) ps.close (); ps = null; if (conn! = null) conn.close (); conn = null;} catch (sqlexception e) {e.printstacktrace ();}}}Wenn Sie so geschrieben sind, können Sie die folgende Methode befolgen, wenn Sie andere Klassen anrufen.
Sqlbean sqlbean = new SQLBean (); String [] params = {}; // Wenn es einen Parameter gibt, schreiben Sie ihn in Ergebnisset rs = sqlbean.Query ("Select Ename aus EMP", Params); // SQL Anweisung // Loop Out Try {while (rs.next (). (SQLEXception E) {E. Printstacktrace ();2. Transaktionsverarbeitung
Bei der Verarbeitung von Transaktionen wird die Automatikübermittlung immer zuerst abgebrochen, der Befehl wird ausgeführt und die endgültige Einreichung wird eingereicht, und dann tritt die Ausnahme beim Zurückrollen auf. Wie ich eine Methode schreibt, habe ich noch nicht an eine gute Idee gedacht.
import bean.sqlbean; import Java.sql.*;/*** Erstellt von NL101 am 2016/1/29. "JDBC: Oracle: Thin: @LocalHost: 1521: orcl"; String username = "Scott"; String Password = "7946521"; try {class.forname (driverName); conn = driverManager Conn.CreateStatement (); Ps.Addbatch ("Satz 1 zu bedienen"); Einreichung} catch (classNotFoundException e) {e.printstacktrace (); System.err.println ("Datenbankverbindungsausnahme");} catch (sqlexception e) {e.printstacktrace (); system.err.println ("Transaktionsverarbeitung"); conn.setAutocommit (true);}} catch (SQLEXception E1) {e1.printstacktrace ();}} Schließlich beenden Sie die Datenbank -Try {if (rs! = null) rs.close (); null;} catch (sqlexception e) {e.printstacktrace ();}}}}3.. Rufen Sie gespeicherte Verfahren an
call = ct.preparecall ("{call sp_pro4 (?,?,?,? call.setint (2, 4); CALL.SETING (3, 1); // Ausgabeparameter aufrufen. call.registerOutParameter (5, oracletypes.number); call.registerOutParameter (6, oracletypes.cursor); // CALL.EXECUTE (); // Die Gesamtzahl der Ausgänge und Gesamtseiten system.out.println ("Gesamtzahl der Datensätze"+call.getint (4)+"-Gesamtzahl der Seiten"+call.getint (5)); //. while (rs.Next ()) {für (int i = 0; i <7; i ++) {System.out.print (rs.getString (i+1)+");} System.out.println ();}4.. Bewegbare Ergebnismenge
Sonne bietet nur eine Schnittstelle. Ob es betrieben werden kann, hängt davon ab, ob der von Ihnen referenzierende JDBC -Treiber es unterstützt.
Java.sql.*; public class testscroll {public static void main (String args []) {try {new oracle.jdbc.driver.oracledriver (); String url = "jdbc: oracle:@192.168.0.1: 1521: sxt"; stmt = conn.createstatement (resultset.type_scroll_insensitiv, // Setzen Sie die RS auf Scroll resultset.concur_read_only); // Setzen Sie die RS auf schreib--resultset rs = stmt.executeQuery ("aus der EMP-Reihenfolge nach Salz"). System.out.println (rs.getint (1)); em.out.println (rs.getrow ()); (SQLEXception E) {e.printstacktrace ();}}}5. Aktualisierbares Ergebnissatz
Java.sql.*; public class testupdatars {public static void main (String args []) {try {new oracle.jdbc.driver.oracledriver (); String url = "Jdbc: Oracle: Dünn:@192.168.0.1: 1521: SXT"; Verbindung "; conn = driverManager.getConnection (URL, "Scott", "Tiger"); Aussage stmt = conn.CreateStatement (resultset.type_scroll_insensitive, resultset.concur_updatable); resultset rs = stmt.executequery ("select * aus EMP2"; rs.updatestring ("Ename", "aaaa"); 99.99);Die oben genannten Operationen, mit denen ich häufig eine Verbindung zu SQL -Datenbanken in Java herstellt, die der Editor mit Ihnen teilt. Ich hoffe, es wird Ihnen hilfreich sein.