Feeds:
Posts
Comments

Archive for the ‘Oracle’ Category

cd ~
pi@raspberrypi:~$ git clone git://github.com/jnr/jffi.git jffi.git
cd jffi.git
ant jar
sudo cp libjffi-1.2.so /usr/lib

Advertisements

Read Full Post »

2011 in review

The WordPress.com stats helper monkeys prepared a 2011 annual report for this blog.

Here’s an excerpt:

A New York City subway train holds 1,200 people. This blog was viewed about 7.700 times in 2011. If it were a NYC subway train, it would take about 6 trips to carry that many people.

Click here to see the complete report.

Read Full Post »

Use md5 in pl/sql…

Hi everyone; You can use dbms_obfuscation_toolkit for your Cryptography works. We show you, how can you use md5. And finally we return the results with casting to raw

create or replace
function encodemd5(v_str varchar2) return varchar2 is
 v_string varchar2(100);
 begin
 dbms_obfuscation_toolkit.md5(input_string => v_str,
 checksum_string => v_string);
 return(utl_raw.cast_to_raw(v_string));
end;
/

And finally we can see result with this;

select encodemd5('engin') from dual

That shows us encoded md5 string as result;

B238BAD91D48802AFBDA6A1E315EC5C7

Read Full Post »

Hello Everyone;

Now we are going to fill the JTable with sql query in java. We have to use swing for use of JTable, because Jtable, JScrollPane and JFrame use the Swing library. We use JFrame for create a window, JScrollPane for scroll the data and JTable for list data. We’ll fill JTable with AbstractTableModel and create two class. The 1st. class shows data in the window and the 2nd. class creates table model for fills the JTable. I selected oracle’s all_tables view for listed data. You can see the codes at below;

import java.sql.*;
import java.util.*;
import javax.swing.table.*;

public class FillTable extends AbstractTableModel{

 /**
 *
 */
 private static final long serialVersionUID = -912060609250881296L;
 private ResultSet rs;
 private int rowCount;
 private int columnCount;
 private ArrayList data=new ArrayList();

 public FillTable(ResultSet _rs) throws Exception
 {
 setRS(_rs);
 }

 public void setRS(ResultSet _rs)
 throws Exception
 {
 this.rs=_rs;
 ResultSetMetaData metaData=_rs.getMetaData();
 rowCount=0;
 columnCount=metaData.getColumnCount();
 while(_rs.next()){
 Object[] row=new Object[columnCount];
 for(int j=0;j<columnCount;j++){
 row[j]=_rs.getObject(j+1);
 }
 data.add(row);
 rowCount++;
 }
 }

 public int getColumnCount(){
 return columnCount;
 }

 public int getRowCount(){
 return rowCount;
 }

 public Object getValueAt(int rowIndex, int columnIndex){
 Object[] row=(Object[]) data.get(rowIndex);
 return row[columnIndex];
 }

 public String getColumnName(int columnIndex){
 try{
 ResultSetMetaData metaData=rs.getMetaData();
 return metaData.getColumnName(columnIndex+1);
 }catch(Exception e){
 e.printStackTrace();
 return null;
 }
 }
}

This class creates table model for fills JTable. Before we fill the JTable,  we have to fill the AbstractTableModel, so we talk about MVC in here. (Model View Controller) Let’s see how to  use this class.

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class MyTable {
 public static void main(String[] argv) throws Exception {
 JTable table = new JTable(myModel());

 JFrame f = new JFrame();
 f.setSize(300, 300);
 f.add(new JScrollPane(table));
 WindowListener wClose = new WindowAdapter() {
 public void windowClosing(WindowEvent e){
 System.exit(0);
 }
 };
 f.setVisible(true);

 }

 public static FillTable myModel() throws Exception{
 try {
 Class.forName ("oracle.jdbc.driver.OracleDriver");
 } catch (ClassNotFoundException e) {
 e.printStackTrace();
 }

 Connection con = DriverManager.getConnection
("jdbc:oracle:thin:@Host:port:sid", "user", "pass");

 Statement st = con.createStatement();
 ResultSet rs = st.executeQuery("select owner,table_name,tablespace_name from all_tables");
 FillTable model = new FillTable(rs);
 return model;
 }
}

In this class we are getting a results from sql query and we are creating an object with this results. And then we are creating JTable with this object. The another usage is setModel method.You can use this method as “table.setModel(myModel());”. When you are running the program, you are going to see the data in Jtable.

Read Full Post »

Hi;

In this article i explain how to connect oracle with jdbc.  Before we start, we must download oracle oci driver for oracle version. You can find these oci drivers from here.

I use Oracle driver for Oracle 10.x database. After you download the Oracle oci driver we can start . We add new Java Project in eclipse. In libraries from “add external jars”, you must choice oci driver jar file.(I select ojdbc14.jar for oracle 10.x.) We add a main class for getting output from sql.

import java.sql.*;

public class main {

 /**
 * @param args
 * @throws SQLException
 */
 public static void main(String[] args) throws SQLException {
 // TODO Auto-generated method stub
 try {
 Class.forName ("oracle.jdbc.driver.OracleDriver");
 } catch (ClassNotFoundException e) {
 e.printStackTrace();
 }

 Connection con = DriverManager.getConnection
 ("jdbc:oracle:thin:@ngeen-Laptop:1521:xe", "ngeen", "202020");
// @machine:port:SID,   user,  pass

 Statement st = con.createStatement();
 ResultSet rs = st.executeQuery("select * from all_tables");
 while (rs.next())
System.out.println (rs.getString(1));   // echo column 1
 st.close();
 }
}

If you look at the console you can see 1st column of all_tables view in database.

Read Full Post »

Fantazi sqller!!!

Başlık normalden değişik bir başlık fakat bu başlığın nedenini soracak olursanız birazdan anlatacağım sql sorguları normalde yazdığımız sqllerden bir miktar farklı şöyleki;

Farz edelim 1 den 20 ye kadar sayıların olduğu bir sql sorgusuna ihtiyacımız oluğunu düşünelim. Bunun için değişik yollar izleyebiliriz, bunların en basiti bir tablo sorgularken rownum kullanarak 20 veya daha fazla kayıt olan tabloda 1’den 20’ye kadar sayılıarı listeleyebiliriz.

Örnek :

select rownum sayi from all_tables where rownum<=20;

Sistemde bulunan all_tables view’i ile 1 den 20 ye kadar sayıları almak için bir sorgu çektik. sonuç olarak bize sorguyu getiriyor. Fakat performans olarak düşünürsek bize maliyeti 264 gibi bir rakam olacaktır. Bunun yerine aşağıdaki sorguyu çektiğimizde elde ettiğimiz cost 2’dir. Arada ciddi bir fark mevcuttur. Bununla birlikte birkaç tablo joinlediğimiz zaman cost (yani maliyet) daha da artacaktır.

select rownum sayi from dual connect by rownum<=20;

Şimdi de dbms_random paketinden bahsedelim. Bu paket içinde belirli fonksiyon ve prosedurleri içeren bir pakettir. Kullanımı ile ilgili birkaç örnek verelim;

select dbms_random.value(1,100) from dual;

Şeklinde bir kullanım bize 1 ile 100 arasında bir değer verecektir. fakat bu değer ondalıklı bir değer olacaktır. bu nedenle direk tam sayı alabilmek için;

select trunc(dbms_random.value(1,100)) from dual;

şeklinde kullanabilirsiniz.

Birbaşka kullanım şeklide sıralama yaparken order by kısmında kullanılabilmesidir. Bunun için şu şekilde bir örnek yapabiliriz, güncel bir örnek verecek olursak herhafta çekilen sayısal loto gayet güzel ve ilke örnekle bir bütün teşkil edecektir. gelin bir göz atalım;

select * from (
select rownum sayi from dual connect by rownum<=49
order by dbms_random.value)
where rownum<=6;

Burdaki 1’den 49’a kadar sıralı bir sayı dizisi getiriyoruz.Daha sonra order by dbms_random.value fonksiyonu ile bu sayıları rasgele bir şekilde sıralıyoruz ve içinden ilk 6 tanesini alıyoruz. bir örnek daha verecek olursak 4 * 4’lük rasgele sayılardan oluşan bir matris dizisi yaratmak istediğimizi düşünelim, bunun için;

SELECT TRUNC(dbms_random.value(1,100)) sayi1,
TRUNC(dbms_random.value(1,100)) sayi2,
TRUNC(dbms_random.value(1,100)) sayi3,
TRUNC(dbms_random.value(1,100)) sayi4
FROM dual connect by rownum<=4;

yukarıdaki sorgu size 1’den 100’e kadar rasgele sayılardan oluşan 4*4’lük bir matris dizisi verecektir.

Bana göre bu sql sorguları çok fazla kullanım alanları olmadığı için fantazi sql sorgularıdır, fakat öyle yerler gelir ki bu sqller sizin için hayat kurtarıcı olabilir, elinizde binlerce kayıt var ve deneme yapmak için rasgele değerler atmanız gerekiyor diyelim, veya maliyetlerle ilgili bir düzenleme yapacaksınız ve bir tabloyu milyonlarca kayıtla doldurmanız gerekiyor veya en extrem durum 1’den belli bir sayıya kadar sadece sayı ihtiyacınız oldu diyelim, örnekler daha da arttırılabilir.

Başka bir yazıda daha görüşmek üzere, hoşçakalın…

Read Full Post »

Pl/Sql Xml Ayrıştırma…

Farz edelim ki elinizde aşağıdaki şekilde bir xml dosyası var;

<?xml version=”1.0″?>
<xsl:stylesheet version=”1.0″ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”&gt;
<xsl:template match=”/”>
<html>
<body>
<h2>My CD Collection</h2>
<table border=”1″>
<tr>
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select=”catalog/cd”>
<tr>
<td><xsl:value-of select=”title”/></td>
<td><xsl:value-of select=”artist”/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

örnek xml üzerinde “My CD Collections” kısmını almak istediğimizi düşünürsek bunun için html->body->h2 şeklinde bir yol izlememiz gerekecektir. Fakat sadece bu yolu izlememiz yetmeyecek çünkü burda <xsl:stylesheet version=”1.0″ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”&gt; kısmında bir namespace verilmiş. Yani pl/sql’de bir sorgu hazırlarken bunu göz önünde bulundurmamız gerekecek. Gelin örneğe bir göz atalım;

with t as (
select xmltype(‘<?xml version=”1.0″?>
<xsl:stylesheet version=”1.0″
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”&gt;
<xsl:template match=”/”>
<html>
<body>
<h2>My CD Collection</h2>
<table border=”1″>
<tr>
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select=”catalog/cd”>
<tr>
<td><xsl:value-of select=”title”/></td>
<td><xsl:value-of select=”artist”/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>’) x from dual)
select extractValue(x, ‘/xsl:stylesheet /xsl:template/html/body/h2/text()’,
‘xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”&#8216;) deger
from t
;

Bu sorgudaki ilk kısımda aslında bir xml tipi cast ediliyor, esas görev 2. sorguda extractValue komutu xml içindeki alanları ayırmamızı sağlayan bir komuttur.‘xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”&#8216; kısmında namespace’imizi extractValue komutuna tanımlıyoruz, ve ardından xml textimizde bulunan alanlarda sırası ile ilerliyoruz, xsl:stylesheet->xsl:template->html->body->h2->text() en son kısımdaki text() komutu XPATH’de içinde bulunduğumuz node’a ait text’i verecektir bize. Bu şekilde basitçe xml parse işlemi gerçekleştirebiliriz.

Sevgilerle…

Read Full Post »

Older Posts »