top of page

Java – Veri Madenciligi / SQL Viewer

  • Writer: Sevdanur GENC
    Sevdanur GENC
  • Dec 7, 2011
  • 4 min read

Bu uygulamamizda ODBC ile ayarladigimiz veri tabani dosyamizdan verilerimizi cekip sorgulamalarimizi yapicaz... Ayni zaman da null veriler varsa bunlari buldurtup kullanicidan veri girilip girilmeyecegini veya bu verilerin silinip silinmeyecegi hakkinda onay alacagiz. Açık Veritabanı Bağlantısı (ODBC), bir tür veritabanından (veri kaynağı) diğer tür veritabanına veri taşımak için kullanabileceğiniz bir teknolojidir. Bunun için doğru sürücüye gereksiniminiz vardır. Bu surucu ayarlarini da ODBC ayarlari ile yapmaktayiz.

Projemizi olusturmaya baslarken yine oncelikle adim adim gidecegiz.

    Ilk adimimiz da ODBC ayarlarini yapabilememiz icin karsimiza ODBC penceresini getirmesini saglayacagimiz komutlari yazacagiz...   ODBC'yi calistir butonu icin kullanilan komutlar ;ODBC'yi calistir butonu icin kullanilan komutlar ; Runtime calistir = Runtime.getRuntime(); Process durum = null; try { durum = calistir.exec("C:\\WINDOWS\\system32\\odbcad32.exe"); System.out.print("çalıştı"); } catch(Exception e) { System.out.print("çalışmadı"); }   Baglanti Kur butonumuzun icerigi ;Baglanti Kur butonumuzun icerigi ; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); java.sql.Connection baglanti = java.sql.DriverManager.getConnection(textField1.getText().toString(),"",""); System.out.println("baglanti saglanmistir..."); list2.add("Baglanti basari ile saglanmistir..."); baglanti.close(); } catch (Exception e) {     e.printStackTrace(); list2.add(e.toString()); }   Sirada ki islemlerimiz ; baglanti saglandiktan sonra yaptigimiz sorgulamalara gore verilerimi jtable'larimiza aktarmamizdir. Eger ki bu sorgulamalar da sorgulanacak max satir sayisi belirtmek istiyorsaniz bunu da jspinner nesnesi ile yapabilirsiniz... Asagida ki gorunume ait komutlara gelecek olursak ;

Sorgulamaya basla komutu icin ;Sorgulamaya basla komutu icin ; int i=1; int indis=2; java.sql.ResultSet sonucveriler; java.sql.Statement sorgulama=null; int j = 0; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); java.sql.Connection baglanti = java.sql.DriverManager.getConnection(textField1.getText().toString(),"",""); sorgulama = baglanti.createStatement(); String sorgu=textArea1.getText().toString(); String limitver=jSpinner1.getValue().toString(); String sonuc1 = sorgu.substring(0,7); String sonuc2 = sorgu.substring(6,sorgu.length()); System.out.println(sonuc1); System.out.println(sonuc2); System.out.println(sonuc1 + "top " + limitver + sonuc2); if(!(limitver.equals("0"))) { int sayac1 = 0; sonucveriler = sorgulama.executeQuery(sonuc1 + "top " + limitver + sonuc2); System.out.println("baglanti saglanmistir..."); System.out.println("sorgulari saydiriyoruz..."); list1.add(textArea1.getText().toString()); java.sql.ResultSetMetaData rowdata= sonucveriler.getMetaData(); int k = rowdata.getColumnCount(); String[] kolon=new String; for( j=0; j<k; j++) { kolon=rowdata.getColumnName(j+1); } jTable1.setModel(new javax.swing.table.DefaultTableModel(new Object [][] {},new String [] {})); DefaultTableModel model=(DefaultTableModel)jTable1.getModel(); model.setColumnIdentifiers(kolon); while(sonucveriler.next()) { Object[] o=new Object; for(j=0; j<k; j++) { o=sonucveriler.getObject(j+1); } sayac1++; model.addRow(o); } list2.add(limitver + " adet sorgu basariyla sonuclanmistir"); list2.add("Sorgulama sonucu toplam ; " + String.valueOf(sayac1)+" adet satiriniz bulunmaktadir..."); } else { int sayac2 = 0; sonucveriler = sorgulama.executeQuery(textArea1.getText().toString()); System.out.println("baglanti saglanmistir..."); System.out.println("sorgulari saydiriyoruz..."); list1.add(textArea1.getText().toString()); java.sql.ResultSetMetaData rowdata= sonucveriler.getMetaData(); int k = rowdata.getColumnCount(); String[] kolon=new String; for( j=0; j<k; j++) { kolon=rowdata.getColumnName(j+1); } jTable1.setModel(new javax.swing.table.DefaultTableModel(new Object [][] {},new String [] {})); DefaultTableModel model=(DefaultTableModel)jTable1.getModel(); model.setColumnIdentifiers(kolon); while(sonucveriler.next()) { Object[] o=new Object; for(j=0; j<k; j++) { o=sonucveriler.getObject(j+1); } sayac2++; model.addRow(o); } list2.add("sorgu basariyla sonuclanmistir"); list2.add("Sorgulama sonucu toplam ; " + String.valueOf(sayac2)+" adet satiriniz bulunmaktadir..."); jTabbedPane1.setSelectedIndex(jTabbedPane1.countComponents()-1); } sonucveriler.close(); baglanti.close(); } catch (Exception e) { e.printStackTrace(); }   Sorgulamayi temizle butonunun icerigi icin ;Sorgulamayi temizle butonunun icerigi icin ; textArea1.setText("");   Null verileri buldurttugumuz butonun icerigi icin ;Null verileri buldurttugumuz butonun icerigi icin ; try { JOptionPane.showMessageDialog(null, "Null Ifadeler Kontrol Ediliyor..."); for(int i = 0; i <jTable1.getColumnCount(); i++) { if(jTable1.getValueAt(0,i)instanceof Integer) { for (int j = 0; j <jTable1.getRowCount(); j++) { if(jTable1.getValueAt(j,i)==null) { sutunno=i; toplam1(sutunno); kolon = jTable1.getColumnName(sutunno); list2.add((i+1)+ ".Sutun " + (j+1) + ".Satir Alanlarinda NULL veriler bulundu."); JOptionPane.showMessageDialog(null, (i+1)+ ".Sutun " + (j+1) + ".Satir Alanlarinda NULL veriler bulundu."); jTable1.setDefaultRenderer(Object.class, new MyTableCellRenderer()); jTable1.repaint(); } } } } } catch (Exception e) { e.printStackTrace(); list2.add(e.toString()); }

                Null verilerimizi buldurturken table'da ki hucrelerimizi renklendirerek kullaniciya hatasini daha derinlemesine bir sekilde gosterek uyarabiliriz. Bunun icinde ayrica bir sinif kullanilmistir komutlarimizda...  

MyTableCellRenderer() class'inin komutlari icin ;

MyTableCellRenderer() class'inin komutlari icin ;

package sql_viewer; import java.awt.Color; import java.awt.Component; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; public class MyTableCellRenderer extends DefaultTableCellRenderer { private Component cmp; public MyTableCellRenderer() { super(); setOpaque(true); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if(value == null || value.toString().isEmpty()) { setBackground(isSelected ? table.getSelectionBackground():Color.RED); setForeground(isSelected ? table.getSelectionForeground():Color.WHITE); } else { setBackground(isSelected ? table.getSelectionBackground() : table.getBackground()); setForeground(isSelected ? table.getSelectionForeground() : table.getForeground()); } setText(value !=null ? value.toString() : ""); return this; } public void setBackgroundColor() { cmp.setBackground(Color.green); } }

Isleme basla komutlarinin iceriginde ise sunlar yer almaktadir ;

Isleme basla komutlarinin iceriginde ise sunlar yer almaktadir ;

double ortalama1; public double toplam1(int sutunno) {int toplam=0; for (int k = 0; k <= jTable1.getRowCount()-1; k++) { if(jTable1.getValueAt(k,sutunno)==null) toplam=toplam+0; else toplam=toplam +Integer.parseInt(jTable1.getValueAt(k,sutunno).toString()); } ortalama1=toplam/jTable1.getRowCount(); return ortalama1; } double ortalama2; public double toplam2(int sutunno2) { int toplam1=0; for (int k = 0; k <= jTable1.getRowCount()-1; k++) { toplam1=toplam1 +Integer.parseInt(jTable1.getValueAt(k,sutunno2).toString()); } ortalama2=toplam1/jTable1.getRowCount(); return ortalama2; } public double standartsapma(int sutunno2) { double sapma=0; toplam2(sutunno2); for (int k = 0; k <= jTable1.getRowCount()-1; k++) { int deger=Integer.parseInt(jTable1.getValueAt(k,sutunno2).toString()); sapma+=Math.pow(deger-ortalama2,2); } return Math.sqrt(sapma); } int sutunno; String kolon; if(buttonGroup1.isSelected(jRadioButton1.getModel())) { try { for(int i = 0; i <jTable1.getColumnCount(); i++) { if(jTable1.getValueAt(0,i)instanceof Integer) { for (int j = 0; j <jTable1.getRowCount(); j++) { if(jTable1.getValueAt(j,i)==null) { sutunno=i; toplam1(sutunno); kolon = jTable1.getColumnName(sutunno); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); java.sql.Connection baglanti = java.sql.DriverManager.getConnection(textField1.getText().toString(),"",""); String sqldeletecumlesi = "update elemanlar set " + kolon + " = ? where " + kolon + " is null"; PreparedStatement preparedStmt = baglanti.prepareStatement(sqldeletecumlesi); preparedStmt.setInt(1,(int) toplam1(sutunno)); preparedStmt.execute(); baglanti.close(); JOptionPane.showMessageDialog(null, (i+1)+".Sutun " + (j+1)+".Satir Ortalama ile dolduruldu.", "SONUC", JOptionPane.ERROR_MESSAGE); list2.add((i+1)+".Sutun " + (j+1)+".Satir Ortalama ile dolduruldu."); } } } } } catch (Exception e) { e.printStackTrace(); list2.add(e.toString()); } } if(buttonGroup1.isSelected(jRadioButton2.getModel())) { try { for(int i = 0; i <jTable1.getColumnCount(); i++) { for (int j = 0; j <jTable1.getRowCount(); j++) { if(jTable1.getValueAt(j,i)==null) { kolon = jTable1.getColumnName(i); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); java.sql.Connection baglanti = java.sql.DriverManager.getConnection(textField1.getText().toString(),"",""); String sqldeletecumlesi = "delete * from elemanlar where " + kolon + " is null and " + j + " = ?"; PreparedStatement preparedStmt = baglanti.prepareStatement(sqldeletecumlesi); preparedStmt.setInt(1, Integer.valueOf(j)); preparedStmt.execute(); baglanti.close(); JOptionPane.showMessageDialog(null,(i+1)+".Sutun "+ (j+1)+".Satir'da ki Veriler Silindi", "SONUC", JOptionPane.ERROR_MESSAGE); list2.add((i+1)+".Sutun "+ (j+1)+".Satir'da ki Veriler Silindi"); } } } } catch (Exception e) { e.printStackTrace(); list2.add(e.toString()); } }

Standart Sapma butonunun icerigi icin ;

Standart Sapma butonunun icerigi icin ;

try { for(int i = 0; i <jTable1.getColumnCount(); i++) { if(jTable1.getValueAt(0,i)instanceof Integer) { int a=0;  int b=0;   int altaralık=0;   int ustaralık=0; a=(int)standartsapma(i);                System.out.println(a); b=(int)toplam2(i); altaralık = b-a;                          System.out.println(altaralık); ustaralık = b+a;                          System.out.println(ustaralık); kolon = jTable1.getColumnName(i); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); java.sql.Connection baglanti = java.sql.DriverManager.getConnection(textField1.getText().toString(),"",""); String sqldeletecumlesi = "update elemanlar set " + kolon + " = ? where " + kolon + ">" + ustaralık +" or " + kolon + "<" + altaralık +""; PreparedStatement preparedStmt = baglanti.prepareStatement(sqldeletecumlesi); preparedStmt.setInt(1,b); preparedStmt.execute(); baglanti.close(); JOptionPane.showMessageDialog(null,"aşırı değerler ortalama ile dolduruldu.", "SONUC", JOptionPane.ERROR_MESSAGE); } } } catch (Exception e) { e.printStackTrace(); list2.add(e.toString()); }

Ve son olarak kullandigimiz kutuphaneler ise soyledir ;

Ve son olarak kullandigimiz kutuphaneler ise soyledir ;

import org.jdesktop.application.Action; import org.jdesktop.application.ResourceMap; import org.jdesktop.application.SingleFrameApplication; import org.jdesktop.application.FrameView; import org.jdesktop.application.TaskMonitor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Timer; import javax.swing.Icon; import javax.swing.JDialog; import java.sql.*; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; import javax.swing.JFrame;  

Not ;  Bu uygulama; Suleyman Demirel Universitesi – Bilgisayar Muhendisligi Veri Madenciligi dersi icin tarafimdan yazilmis ve de gelistirilmis bir uygulamadir…

Recent Posts

See All
Ado.Net Entity Framework Ogreniyorum Serisi 00

Ado.Net Entity Framework (EF) verileri ile etkilesim uygulamalari gelistirmek icin kullanilan Ado.Net nesne iliskisel modelleme yazilimi olarak iliskisel veritabani semalarini ve nesneler arasinda ki

 
 
 
LINQ Ogreniyorum Serisi 05

Linq To Sql’de tablolarimizdaki verileri silebilmemiz icin; DataContext icerisinde ki DeleteOnSubmit ve DeleteAllOnSubmit metodlari kullanilmaktadir. Beraberinde SubmitChanges metodu da kodlari eklen

 
 
 
LINQ Ogreniyorum Serisi 04

Linq To Sql’de tablolarimiza verileri guncelleyebilmemiz icin; DataContext icerisinde ki SubmitChanges metodu kullanilmaktadir. Bu komutlari kullanarak DataContext sinifinin yapisina da ihtiyac duyu

 
 
 

Comments


©2035 by Sevdanur Genc. Powered and secured by Wix

bottom of page