venerdì 11 giugno 2010

Apache Derby: codice d'esempio





001 package com.blogspot.pilloledijava.derby;
002 
003 import java.io.File;
004 import java.math.BigDecimal;
005 import java.sql.Connection;
006 import java.sql.DriverManager;
007 import java.sql.PreparedStatement;
008 import java.sql.ResultSet;
009 import java.sql.SQLException;
010 import java.sql.Statement;
011 
012 public class DerbyExample {
013 
014   private static ExampleDbManager dbManager;
015 
016   /**
017    @param args
018    */
019   public static void main(String[] args) {
020     try {
021       dbManager = new ExampleDbManager(new File("data/example"));
022       dbManager.createTable();
023       dbManager.insertSample(100);
024       final String all = dbManager.getCheapest();
025       System.out.println("Cheapest item description: " + all);
026       final int count = dbManager.countCheaperThen(BigDecimal
027           .valueOf(5.0));
028       System.out.println("Cheap item: " + count);
029 
030       System.out.println();
031       System.out
032           .println("Apache Derby example: http://pilloledijava.blogspot.com/");
033       System.out.println("Enjoy !!!!");
034 
035     catch (Exception e) {
036       e.printStackTrace();
037       System.out
038           .println("Apache Derby example: http://pilloledijava.blogspot.com/");
039       System.out.println("Something wrong, sorry...");
040     finally {
041       try {
042         if (dbManager != null)
043           dbManager.close();
044       catch (SQLException e) {
045         // nothing in finally statement
046       }
047     }
048 
049   }
050 
051   /**
052    * Derby connection wrapper
053    
054    @author pdj
055    
056    */
057   public static class DbManager {
058 
059     protected final Connection connection;
060 
061     /**
062      * Embedded derby connection wrapper
063      
064      @param path
065      *            database location
066      @throws ClassNotFoundException
067      @throws SQLException
068      */
069     public DbManager(final File paththrows ClassNotFoundException,
070         SQLException {
071       // load Derby driver
072       Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
073       // instantiate derby connection, if necessary creates database
074       connection = DriverManager.getConnection("jdbc:derby:"
075           + path.getAbsolutePath() ";create=true");
076     }
077 
078     /**
079      * Close connection
080      
081      @throws SQLException
082      */
083     public void close() throws SQLException {
084       connection.close();
085     }
086 
087   }
088 
089   /**
090    * Example query
091    
092    @author pdj
093    
094    */
095   public static class ExampleDbManager extends DbManager {
096 
097     public ExampleDbManager(final File paththrows ClassNotFoundException,
098         SQLException {
099       super(path);
100     }
101 
102     /**
103      * Create item table
104      
105      * run one time!
106      
107      @throws SQLException
108      */
109     public void createTable() throws SQLException {
110       Statement createStatement = null;
111       try {
112         createStatement = connection.createStatement();
113         createStatement
114             .execute("create table item(id integer primary key generated always as identity, description varchar(50) not null, price numeric(10,2)) ");
115       finally {
116         if (createStatement != null)
117           createStatement.close();
118       }
119     }
120 
121     /**
122      * Insert a lot of dummy item
123      
124      @param count
125      @throws SQLException
126      */
127     public void insertSample(final int countthrows SQLException {
128       PreparedStatement insertStatement = null;
129       try {
130         insertStatement = connection
131             .prepareStatement("insert into item (description, price) values(?, ?)");
132         for (int i = 0; i < 100; i++) {
133           final String randomName = "item_" + Math.random();
134           insertStatement.setString(1, randomName);
135           final BigDecimal randomPrice = BigDecimal.valueOf(
136               (long) (Math.random() 1000)2);
137           insertStatement.setBigDecimal(2, randomPrice);
138           insertStatement.execute();
139         }
140       finally {
141         if (insertStatement != null)
142           insertStatement.close();
143       }
144     }
145 
146     /**
147      * Return the description of the cheapest item
148      
149      @return
150      @throws SQLException
151      */
152     public String getCheapest() throws SQLException {
153       Statement createStatement = null;
154       try {
155         createStatement = connection.createStatement();
156         final ResultSet rs = createStatement
157             .executeQuery("SELECT description FROM item where price = (select min(price) from item)");
158         try {
159           return rs.next() ? rs.getString("description"null;
160         finally {
161           if (rs != null)
162             rs.close();
163         }
164       finally {
165         if (createStatement != null)
166           createStatement.close();
167       }
168     }
169 
170     /**
171      * Count item cheaper the threshold
172      
173      @param threshold
174      @return
175      @throws SQLException
176      */
177     public int countCheaperThen(final BigDecimal threshold)
178         throws SQLException {
179       PreparedStatement createStatement = null;
180       try {
181         createStatement = connection
182             .prepareStatement("select count(*) as c from item where price <= ?");
183         createStatement.setBigDecimal(1, threshold);
184         final ResultSet rs = createStatement.executeQuery();
185         try {
186           return rs.next() ? rs.getInt("c"null;
187         finally {
188           if (rs != null)
189             rs.close();
190         }
191       finally {
192         if (createStatement != null)
193           createStatement.close();
194       }
195     }
196 
197   }
198 
199 }




Post correlati:
Apache Derby: il DBMS portabile (Introduzione)
Apache Derby: configurare Eclipse per iniziare un progetto
Query SQL: tutorial passo-passo

Nessun commento:

Posta un commento