I'm cannot connect applet and DB2. It has some error when i use Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();
the error is NullPointerException
When i use Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance(); I see this error.
java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:130)
at com.jrefinery.chart.demo.DualAxisApp.<clinit>(DualAxisApp.java:84)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
at java.lang.Class.newInstance0(Class.java:296)
at java.lang.Class.newInstance(Class.java:249)
at sun.applet.AppletPanel.createApplet(AppletPanel.java:548)
at sun.plugin.AppletViewer.createApplet(AppletViewer.java:1627)
at sun.applet.AppletPanel.runLoader(AppletPanel.java:477)
at sun.applet.AppletPanel.run(AppletPanel.java:290)
at java.lang.Thread.run(Thread.java:536)
Caused by: java.security.AccessControlException: access denied (java.util.PropertyPermission ibm.db2.instance.path read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:270)
at java.security.AccessController.checkPermission(AccessController.java:401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)
at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1291)
at java.lang.System.getProperty(System.java:572)
at COM.ibm.db2.jdbc.app.DB2Driver.<init>(DB2Driver.java:170)
at COM.ibm.db2.jdbc.app.DB2Driver.<clinit>(DB2Driver.java:129)
... 14 more
*************************************************
package com.jrefinery.chart.demo;
import javax.swing.JApplet;
import javax.swing.*;
import java.sql.*;
import java.lang.String;
import java.awt.Color;
import com.jrefinery.chart.JFreeChart;
import com.jrefinery.chart.Legend;
import com.jrefinery.chart.ChartFactory;
import com.jrefinery.chart.ChartPanel;
import com.jrefinery.chart.axis.Axis;
import com.jrefinery.chart.axis.ValueAxis;
import com.jrefinery.chart.axis.HorizontalCategoryAxis;
import com.jrefinery.chart.axis.VerticalNumberAxis;
import com.jrefinery.chart.plot.CategoryPlot;
import com.jrefinery.chart.renderer.DefaultDrawingSupplier;
import com.jrefinery.chart.renderer.LineAndShapeRenderer;
import com.jrefinery.chart.renderer.DrawingSupplier;
import com.jrefinery.chart.renderer.VerticalBarRenderer;
import com.jrefinery.data.CategoryDataset;
import com.jrefinery.data.DefaultCategoryDataset;
import com.jrefinery.ui.ApplicationFrame;
import com.jrefinery.ui.RefineryUtilities;
/**
* A simple demonstration application showing how to create a dual axis chart based on data
* from two {@link CategoryDataset} instances.
*
* @author David Gilbert
*/
public class DualAxisApp extends JApplet {
/**
* Creates a new demo instance.
*
* @param title the frame title.
*/
public static Connection con=null;
public static Statement stmt=null;
public static String url = "jdbc:db2://localhost:50000/eisweb";
static{
try{
Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();
con = DriverManager.getConnection(url,"webadmin","coop");
stmt = con.createStatement();
}
catch (Exception e) {
e.printStackTrace();
}
}
public DualAxisApp() {
// super(title);
CategoryDataset dataset1 = createDataset1();
// create the chart...
JFreeChart chart = ChartFactory.createStackedVerticalBarChart(
"Yield", // chart title
"Time", // domain axis label
"% Defect", // range axis label
dataset1, // data
true, // include legend
true,
false
);
// NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...
DrawingSupplier supplier = new DefaultDrawingSupplier();
// set the background color for the chart...
chart.setBackgroundPaint(Color.orange);
chart.getLegend().setAnchor(Legend.SOUTH);
// get a reference to the plot for further customisation...
CategoryPlot plot = chart.getCategoryPlot();
plot.setDomainAxisLocation(Axis.BOTTOM);
VerticalBarRenderer renderer1 = (VerticalBarRenderer) plot.getRenderer();
renderer1.setDrawingSupplier(supplier);
LineAndShapeRenderer renderer2 = new LineAndShapeRenderer();
renderer2.setDrawingSupplier(supplier);
//--------Create Line Chart Dataset
CategoryDataset dataset2 = createDataset2();
ValueAxis axis2 = new VerticalNumberAxis("% Yield");
plot.setSecondaryRangeAxis(axis2);
plot.setSecondaryDataset(dataset2);
plot.setSecondaryRenderer(renderer2);
// skip some labels if they overlap...
HorizontalCategoryAxis domainAxis = (HorizontalCategoryAxis) plot.getDomainAxis();
domainAxis.setSkipCategoryLabelsToFit(true);
// OPTIONAL CUSTOMISATION COMPLETED.
// add the chart to a panel...
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
setContentPane(chartPanel);
}
/**
* Creates a sample dataset.
*
* @return The dataset.
*/
private CategoryDataset createDataset1() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
try{
String sql="select weekno, type, values from defect order by type, weekno ";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next())
{
// dataset.addValue(2.0, series1, category1);
// System.out.println(rs.getString(3));
float val = rs.getFloat("values");
String type = rs.getString("type");
String week = rs.getString("weekno");
dataset.addValue(val, type, week);
}
}
catch(SQLException ex)
{ ex.printStackTrace();
}
// rs.close();
return dataset;
}
/**
* Creates a sample dataset.
*
* @return The dataset.
*/
private CategoryDataset createDataset2() {
// create the dataset...
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
try{
String sql1="select weekno, values from yield";
ResultSet rs = stmt.executeQuery(sql1);
while(rs.next())
{
// dataset.addValue(98.0, series1, category1);
float val = rs.getFloat("values");
String cate = rs.getString("weekno");
dataset.addValue(val, "Yield", cate);
// System.out.println(rs.getString(1));
}
rs.close();
}
catch(SQLException ex)
{ ex.printStackTrace();
}
return dataset;
}
/**
* Starting point for the demonstration application.
*
* @param args ignored.
*/
public void init() {
DualAxisApp demo = new DualAxisApp();
//demo.pack();
//RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}
********************************************************
<APPLET code=DualAxisApp.class height=300 width=600 archive="DualAxis.jar, jfreechart-0.9.6.jar, db2java.zip, jcommon-0.7.2.jar">
<!-- set code path -->
<PARAM NAME="code" VALUE="com.jrefinery.chart.demo.DualAxisApp">
<PARAM NAME="height" VALUE="300">
<PARAM NAME="width" VALUE="300">
<!-- set path/url that install class file-->
<PARAM NAME="codeBase" VALUE=".">
</APPLET>
****************
Can you help please?
Help!! connect jfreechart applet with DB2
Re: Help!! connect jfreechart applet with DB2
From the source of com.jrefinery.data.JdbcXYDataset
try {
Class.forName(driverName);
if (debug) System.out.println("Opening db connection");
connection = DriverManager.getConnection(url, user, passwd);
statement = connection.createStatement();
} catch (ClassNotFoundException ex) {
System.err.println("Cannot find the database driver classes.");
System.err.println(ex);
} catch (SQLException ex) {
System.err.println("Cannot connect to this database.");
System.err.println(ex);
}
try {
Class.forName(driverName);
if (debug) System.out.println("Opening db connection");
connection = DriverManager.getConnection(url, user, passwd);
statement = connection.createStatement();
} catch (ClassNotFoundException ex) {
System.err.println("Cannot find the database driver classes.");
System.err.println(ex);
} catch (SQLException ex) {
System.err.println("Cannot connect to this database.");
System.err.println(ex);
}