Java, Oracle ve MySQL
10 Kasım 2011 Perşembe
java.lang.IllegalArgumentException
java.lang.IllegalArgumentException: illegal component position
at java.awt.Container.addImpl(Unknown Source)
at javax.swing.JLayeredPane.addImpl(Unknown Source)
at javax.swing.JDesktopPane.addImpl(Unknown Source)
DesktopPane ve InternalFrame içeren classlarımda
Frame oluştuğunda tekrar oluşturulmaması için
if (getForm().isShowing()) {
getForm().toFront();
System.out.println("frame is already opened...");
} else {
System.out.println("open singleton frame");
Program.desktopPane.remove(getForm());
Program.desktopPane.add(getForm());
romeve yapılarak tekrar eklenmesi gerekir. Yoksa hata oluşmakta.
3 Kasım 2011 Perşembe
Jasperreport ile raporlama örneği
MySQL ile raporlama java uygulaması.
Bu örnek için projeye aşağıdaki jarlar eklenmelidir.
https://rapidshare.com/files/826483124/jasperLib.rar
Raporun düzenlemesi i-report ile yapılmıştır.
Baglan, Frame isminde iki class ile oluşmakta.
Projenin dosyası aşağıdaki linkde yer almakta.
https://rapidshare.com/files/1538633838/Raporlama.rar?bin=1
//Baglan.java
import java.sql.Connection;
import java.sql.DriverManager;
import javax.swing.JOptionPane;
public class Baglan {
private Connection con = null;
public Connection getCon() throws InstantiationException, IllegalAccessException {
try{
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, "Sürücü Bulunamadı!","Hata",JOptionPane.ERROR_MESSAGE);
System.err.print("Sürücü bulunamadi");
System.err.println(e.getMessage());
}
try{
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/dbismi","root","123456");1
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "Bağlantı Kurulamadı!","Hata",JOptionPane.ERROR_MESSAGE);
e.getMessage();
System.exit(0);
}
return (con);
}
}
//Frame.java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;
public class Frame extends JFrame {
public static Connection con=null;
public static ResultSet rs;
public static Baglan baglan=new Baglan();
public Frame() {
getContentPane().setLayout(null);
JButton btnNewButton = new JButton("Raporla");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String reportFile = "c:\\reports\\report1.jrxml";
runReport(reportFile);
}
});
btnNewButton.setBounds(10, 50, 91, 23);
getContentPane().add(btnNewButton);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame frm = new Frame();
frm.setBounds(100, 100, 200, 200);
frm.setVisible(true);
}
public static void runReport(String reportFile) {
try {
JasperDesign jasperDesign = JRXmlLoader.load(reportFile);
JasperReport jasperReport = JasperCompileManager
.compileReport(jasperDesign);
rs = null;
con=baglan.getCon();
Statement stmt=con.createStatement();
String sql="SELECT T_ADI FROM TABLE";
rs=stmt.executeQuery(sql);
JRResultSetDataSource resultSetDataSource = new JRResultSetDataSource(rs);
String lsQuery="asd";
Map parameters = new HashMap();
parameters.put("strQry", lsQuery);
JasperPrint jasperPrint = JasperFillManager.fillReport(
jasperReport, parameters, resultSetDataSource);
JasperViewer.viewReport(jasperPrint, false);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Rapor Bulunamadı...");
e.printStackTrace();
}
}
}
Bu örnek için projeye aşağıdaki jarlar eklenmelidir.
https://rapidshare.com/files/826483124/jasperLib.rar
Raporun düzenlemesi i-report ile yapılmıştır.
Baglan, Frame isminde iki class ile oluşmakta.
Projenin dosyası aşağıdaki linkde yer almakta.
https://rapidshare.com/files/1538633838/Raporlama.rar?bin=1
//Baglan.java
import java.sql.Connection;
import java.sql.DriverManager;
import javax.swing.JOptionPane;
public class Baglan {
private Connection con = null;
public Connection getCon() throws InstantiationException, IllegalAccessException {
try{
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, "Sürücü Bulunamadı!","Hata",JOptionPane.ERROR_MESSAGE);
System.err.print("Sürücü bulunamadi");
System.err.println(e.getMessage());
}
try{
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/dbismi","root","123456");1
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "Bağlantı Kurulamadı!","Hata",JOptionPane.ERROR_MESSAGE);
e.getMessage();
System.exit(0);
}
return (con);
}
}
//Frame.java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;
public class Frame extends JFrame {
public static Connection con=null;
public static ResultSet rs;
public static Baglan baglan=new Baglan();
public Frame() {
getContentPane().setLayout(null);
JButton btnNewButton = new JButton("Raporla");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String reportFile = "c:\\reports\\report1.jrxml";
runReport(reportFile);
}
});
btnNewButton.setBounds(10, 50, 91, 23);
getContentPane().add(btnNewButton);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame frm = new Frame();
frm.setBounds(100, 100, 200, 200);
frm.setVisible(true);
}
public static void runReport(String reportFile) {
try {
JasperDesign jasperDesign = JRXmlLoader.load(reportFile);
JasperReport jasperReport = JasperCompileManager
.compileReport(jasperDesign);
rs = null;
con=baglan.getCon();
Statement stmt=con.createStatement();
String sql="SELECT T_ADI FROM TABLE";
rs=stmt.executeQuery(sql);
JRResultSetDataSource resultSetDataSource = new JRResultSetDataSource(rs);
String lsQuery="asd";
Map parameters = new HashMap();
parameters.put("strQry", lsQuery);
JasperPrint jasperPrint = JasperFillManager.fillReport(
jasperReport, parameters, resultSetDataSource);
JasperViewer.viewReport(jasperPrint, false);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Rapor Bulunamadı...");
e.printStackTrace();
}
}
}
Jasperreport Raporlamada Hata
java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
java.lang.NoClassDefFoundError: org/apache/commons/collections/ReferenceMap
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/MethodUtils
Bu hatalardan birini alıyorsanız. Link de bulunan jasper ile ilgili jarları kullanmanız gerekmekte.
Oracle Export İmport
Export : Database in dışarı aktarılması işlemidir.
Bir bat dosyası oluşturarak;
exp usename/password@database_name file=backup.dmp log=backup.log statistics=none
Pause;
yazdığımızda database belirlenen kriterlere göre dışarı dump dosyasına alacaktır
İstisnalar:
Sadece belirli kullanıcıyı almak için; OWNER=ADMIN .
Tüm kullanıcıları almak için;FULL=Y
Tabloları verilerine ihtiyacınız yok ise boş halini almak için; ROWS=NONE
Bazı durumlarda sadece belirli tabloları almak için ; TABLES= TABLE1,TABLE2 yazarak
İmport : Database in içe aktarılması işlemidir.
imp usename/password@database_name file=backup.dmp log=backup.log fromuser=auser touser=buser
Pause;
Yine TABLES kriteri import da kullanılabilir.
Tamamı alınmış bir database dump ın içinde sadece belirli tabloları import etmek için
Bir bat dosyası oluşturarak;
exp usename/password@database_name file=backup.dmp log=backup.log statistics=none
Pause;
yazdığımızda database belirlenen kriterlere göre dışarı dump dosyasına alacaktır
İstisnalar:
Sadece belirli kullanıcıyı almak için; OWNER=ADMIN .
Tüm kullanıcıları almak için;FULL=Y
Tabloları verilerine ihtiyacınız yok ise boş halini almak için; ROWS=NONE
Bazı durumlarda sadece belirli tabloları almak için ; TABLES= TABLE1,TABLE2 yazarak
İmport : Database in içe aktarılması işlemidir.
imp usename/password@database_name file=backup.dmp log=backup.log fromuser=auser touser=buser
Pause;
Yine TABLES kriteri import da kullanılabilir.
Tamamı alınmış bir database dump ın içinde sadece belirli tabloları import etmek için
Oracle Replace Kullanımı
İlgili kolonda bazı veriler düzenlenmek istendiğinde;
Aşağıdaki örnek; KOD alnında " . " geçenleri "" temizleyecek ve update edecektir.
UPDATE ISLEM
SET KOD= REPLACE (KOD,'.','')
Şekil1 : Mevcut Hali
Şekil2: Update edilmiş Hali
Oracle daki tablo ve kolonları listelemek
Oracle da user_tab_ ile başlayan tablolar
kullanıcıya ait tabloları (owner), tablolara ait kolonları enson değişiklik bilgilerini içerir.
select table_name, column_name, data_type, data_length, column_id
from user_tab_columns
where table_name like '%'
order by table_name,column_name;
Bu sql ile aşağıdaki sonuç alınacaktır.
Kaydol:
Kayıtlar (Atom)