Dieses Programm incrementiert für einen angegebenen URL den Zählerstand um 1.
import java.sql.Connection; import java.sql.Statement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.DriverManager; import java.sql.SQLException; public class MysqlCountAdd { static final String mysqlDriver = "com.mysql.jdbc.Driver"; static String dbConnect = "jdbc:mysql://localhost/inet"; static String user = "user"; static String pword = "password"; public static void main(String[] args) { if ( args.length <= 0 ) { System.out.println("usage: MysqlCountAdd <url>"); return; } String url = args[0]; // load mysql driver try { Class.forName( mysqlDriver ); System.out.println("mysqlDriver " + mysqlDriver + " loaded"); } catch (ClassNotFoundException e) { e.printStackTrace(); } // connect to database Connection dbCon = null; try { dbCon = DriverManager.getConnection(dbConnect,user,pword); System.out.println("connected to " + dbConnect); dbCon.setAutoCommit( false ); } catch (SQLException e) { e.printStackTrace(); } if ( dbCon == null ) { return; } // work with database // increment counter of given url PreparedStatement stmt = null; PreparedStatement ustmt = null; ResultSet rs = null; String query = "SELECT count FROM counter WHERE url = ?;"; String update = "UPDATE counter SET count = count + 1 WHERE url = ?"; String insert = "INSERT INTO counter (url,count) VALUES (?,?)"; try { stmt = dbCon.prepareStatement(query); stmt.setString(1, url ); System.out.println("statement prepared " + stmt); rs = stmt.executeQuery(); int count = 1; int rows = 0; if ( rs.next() ) { count = rs.getInt("count"); System.out.println("url = " + url + ", count = " +count); ustmt = dbCon.prepareStatement(update); ustmt.setString(1, url ); rows = ustmt.executeUpdate(); } else { ustmt = dbCon.prepareStatement(insert); ustmt.setString(1, url ); ustmt.setInt(2, count ); rows = ustmt.executeUpdate(); } System.out.println(""+ustmt + "\nrows = " + rows); dbCon.commit(); rs.close(); if ( stmt != null ) { stmt.close(); } if ( ustmt != null ) { ustmt.close(); } } catch (SQLException e) { try { dbCon.rollback(); } catch (SQLException e1) { } e.printStackTrace(); } try { if ( dbCon != null ) { dbCon.close(); System.out.println(dbConnect + " closed"); } } catch (SQLException e) { e.printStackTrace(); } } }
Ausgabe mit UPDATE:
java MysqlCountAdd /srv/www/htdocs/hallo.html mysqlDriver com.mysql.jdbc.Driver loaded connected to jdbc:mysql://localhost/inet statement prepared com.mysql.jdbc.PreparedStatement@a1807c: SELECT count FROM counter WHERE url = '/srv/www/htdocs/hallo.html'; url = /srv/www/htdocs/hallo.html, count = 6 com.mysql.jdbc.PreparedStatement@fa7e74: UPDATE counter SET count = count + 1 WHERE url = '/srv/www/htdocs/hallo.html' rows = 1 jdbc:mysql://localhost/inet closed
Ausgabe mit INSERT:
java MysqlCountAdd /srv/www/htdocs/neu.html mysqlDriver com.mysql.jdbc.Driver loaded connected to jdbc:mysql://localhost/inet statement prepared com.mysql.jdbc.PreparedStatement@a1807c: SELECT count FROM counter WHERE url = '/srv/www/htdocs/neu.html'; com.mysql.jdbc.PreparedStatement@fa7e74: INSERT INTO counter (url,count) VALUES ('/srv/www/htdocs/neu.html',1) rows = 1 jdbc:mysql://localhost/inet closed
© Universität Mannheim, Rechenzentrum, 2004.
Last modified: Sat Jun 5 15:25:02 CEST 2004