Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Java / JSP

Cevapla
 
LinkBack Seçenekler
Eski 20/06/2008, 12:55   #1 (permalink)
Abdullah DAĞLI
 
abdagli Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 10/2004
Yer: Ankara
Mesaj: 459
Varsayılan executeQuery ve execute

Merhabalar.

Kod:
	private ResultSet rs;
	private ResultSetMetaData rsBilgiler;
	private Vector araBellek;
	private int sutunSayisi;

	private void baglanti(Statement mStmt,String mSql) {
		try {
			//rs = mStmt.executeQuery(mSql);
			rs = mStmt.execute(mSql);
			rsBilgiler = rs.getMetaData();
			sutunSayisi = rsBilgiler.getColumnCount();
			
			
			while (rs.next()) {
				String[] satir = new String[rsBilgiler.getColumnCount()];
				for (int i = 0; i < rsBilgiler.getColumnCount(); i++) {
				satir[i] = rs.getString(i + 1);
				}
				araBellek.addElement(satir);
			}
		}
		catch (Exception e) {
			System.out.println(e);
		}
	}
Burada mStmt Statement'ı executeQuery metodunu kullanamıyor. Bunun sebebi nedir. Nasıl çözebilirim?

İyi günler!
__________________
irc.freenode.net #asp-tr
http://java.sun.com/
http://www.flex.org/
abdagli hatta değil   Alıntı Yaparak Yanıtla
Eski 20/06/2008, 13:15   #2 (permalink)
Üye
 
Üyelik Tarihi: 05/2007
Mesaj: 17
Varsayılan

@abdagli
Connection cn = null;
mStmt = cn.createStatement(); // createStatement() sql komutu için nesne oluşturman gerekli yoksa executeQuery() methodunu kullanamazsın.
kodunda gerekli değişikliği yaparsan çalışacaktır.
junkex hatta değil   Alıntı Yaparak Yanıtla
Eski 20/06/2008, 13:43   #3 (permalink)
Abdullah DAĞLI
 
abdagli Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 10/2004
Yer: Ankara
Mesaj: 459
Varsayılan

Onları yapıyorum. Ama durum biraz daha farklı. En iyisi ben kodun tamamını vereyim.

src/Program.java
Kod:
import java.beans.Statement;
import java.sql.*;

import kamyon.KTable;

public class Program {
	public static void main(String[] args) {
		
		try {
			Class.forName("com.mysql.jdbc.Driver");
			Connection baglanti = DriverManager.getConnection("jdbc:mysql://localhost/asc?user=root");
			Statement stmt = (Statement) baglanti.createStatement();
			
			KTable tablom = new KTable(stmt,"SELECT * FROM calisanlar_en");
			tablom.setVisible(true);
		}
		catch (Exception e) {
			System.out.println(e);
		}

	}
}

src/kamyon/KTable.java
Kod:
package kamyon;

import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableColumnModel;

import java.beans.Statement;
import java.sql.*;
import java.util.Vector;

public class KTable extends JTable {
	
	/////////////////////////////////////////////////////
	//KTable kullanmak için verilmesi gereken elemanlar//
	/////////////////////////////////////////////////////
	private Statement stmt;
	private String sql;
	
	////////////////////////////////////////////
	//KTable kendi içinde kullandığı elemanlar//
	////////////////////////////////////////////
	private ResultSet rs;
	private ResultSetMetaData rsBilgiler;
	private Vector araBellek;
	private int sutunSayisi;
	private static TableModel model;
	private TableColumnModel cm = null;
	private ListSelectionModel sm = null;
	
	
	///////////////////////////
	//KTable Konsturuktörleri//
	///////////////////////////
	public KTable(Statement cStmt,String cSql) {
		stmt = cStmt;
		sql = cSql;
		modelOlustur();
		
		boolean autoCreate = false;
		TableColumnModel columnModel;
		if (cm != null)
			columnModel = cm;
		else {
			columnModel = createDefaultColumnModel();
			autoCreate = true;
		}
		
		rowMargin = 1;
		columnModel.setColumnMargin(1);
		setColumnModel(columnModel);
		setSelectionModel(sm == null ? createDefaultSelectionModel() : sm);
		setModel(model == null ? createDefaultDataModel() : model);
		setAutoCreateColumnsFromModel(autoCreate);
		initializeLocalVars();
		updateUI(); 
		
	}
	
	
	
	//////////////////////////////////////////////////////
	//KTable çalışması için çalıştırılması gereken metot//
	//////////////////////////////////////////////////////
	public void calistir() {
		
	}
	
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
	//İşlevsel metotlar.
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
	
	//////////////////////////////////////////////////
	//Eldeki verilerle bir TableModel döndüren metot//
	//////////////////////////////////////////////////
	private void modelOlustur() {
		baglanti(stmt,sql);
		
		TableModel mModel = new AbstractTableModel() {
			public int getColumnCount() {
				return sutunSayisi;
			}
			
			public int getRowCount() {
				return araBellek.size();
			}
			
			public Object getValueAt(int row, int col) {
				return ((String[]) araBellek.elementAt(row))[col];
			}
		};
		
		model = mModel;

	}
	
	////////////////////////////////////////////
	//Verilen Statement degerini işleyen metot//
	////////////////////////////////////////////
	private void baglanti(Statement mStmt,String mSql) {
		try {
			rs = mStmt.execute(mSql);
			rsBilgiler = rs.getMetaData();
			sutunSayisi = rsBilgiler.getColumnCount();
			
			
			while (rs.next()) {
				String[] satir = new String[rsBilgiler.getColumnCount()];
				for (int i = 0; i < rsBilgiler.getColumnCount(); i++) {
				satir[i] = rs.getString(i + 1);
				}
				araBellek.addElement(satir);
			}
		}
		catch (Exception e) {
			System.out.println(e);
		}
	}

}

KTable.java dosyasında baglanti() metodunda dediğim execute durumu yeralmaktadır. Burada şimdi execute() metodunu yazdım. Çünkü MyEclipse bana bunu kullanabileceğimi söylüyor. Ama benim istediğim executeQuery metodu.
__________________
irc.freenode.net #asp-tr
http://java.sun.com/
http://www.flex.org/
abdagli hatta değil   Alıntı Yaparak Yanıtla
Eski 20/06/2008, 13:59   #4 (permalink)
Üye
 
Üyelik Tarihi: 05/2007
Mesaj: 17
Varsayılan

Kodunu test edemedim gördüğüm kadarıyla yorum yapıyorum kusura bakma.

Program classında

import java.beans.Statement;
import java.sql.*;

Statement stmt = (Statement) baglanti.createStatement();

Statement tanımlıyosun ama import larına dikkat et java.sql.Statement i kullanacaksın beans.Statement farklı bişey.
import java.beans.Statement; satırını kaldır tekrar dene bakalım.
junkex hatta değil   Alıntı Yaparak Yanıtla
Eski 20/06/2008, 14:53   #5 (permalink)
Üye
 
Üyelik Tarihi: 05/2007
Mesaj: 17
Varsayılan

Statement stmt = (Statement) baglanti.createStatement();
bu satırıda

Statement stmt = baglanti.createStatement();

olarak değiştirmen gerek, zaten createStatement() Statement döner.
junkex hatta değil   Alıntı Yaparak Yanıtla
Eski 20/06/2008, 16:27   #6 (permalink)
Abdullah DAĞLI
 
abdagli Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 10/2004
Yer: Ankara
Mesaj: 459
Varsayılan

@junkex çok teşekkürler. Dediğin gibi yapınca sorun ortadan kalkıyor. Bu bilgi ve yardım için teşekkürler.
__________________
irc.freenode.net #asp-tr
http://java.sun.com/
http://www.flex.org/
abdagli hatta değil   Alıntı Yaparak Yanıtla
Eski 13/07/2008, 10:12   #7 (permalink)
Üye
 
Üyelik Tarihi: 07/2008
Mesaj: 1
Varsayılan

süpersiniz.. ben de burada takılmıştım.. çok teşekkürler..
talhak hatta değil   Alıntı Yaparak Yanıtla
Eski 15/07/2008, 16:02   #8 (permalink)
Üye
 
Üyelik Tarihi: 10/2007
Mesaj: 145
Varsayılan

Merhaba,
bu pembe tabloda bir kişi de gözlüklü şirin olmalı degil mi?

Statement.execute() metodu şunun için kullanılıyor;

Statment'in çalışma anında çalıştıracağı String bir Resultset üretip üretmeyeceği belli degilken ki durumda kullanılır.
Yani bu şu demek bu sql bir "select" cümlecigi olmayabilir.
Eğer sonuçlu sorgu çalıştırılmışsa Statement.getResultset() null olmayan bir ResultSet deger döndürür.Sonuçlu sorgu degilse o zaman da null döndürür...

Statement.execute() ResultSet'e atayamayacağınız boolean deger döndürmüş olması lazım.

Bir başka dikkatimi çeken nokta,
JTable'i kalıtarak model'i de Tablonun içine koymak yerine AbstractTableModel 'den genişletilecek ayrı bir sınıf yapılması ,Statement ve ResultSet'in işlenmesi kanımca daha uygun olurdu.
__________________
Aklına ve yeteneğine çok güvenme evlat!
Sırrın ardından niceleri gitti de hepsi öldüler.

Ölmeden önce ölmenin sırrına erenlere selamım.
rasit.fidan hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
server.execute php karşılığı deggial PHP 6 29/12/2007 12:56
Server.Execute ve Firefox paradise ASP 2 12/06/2007 15:36
Asp eval Execute ExecuteGlobal minder ASP 0 26/03/2007 02:44
server.execute ismail pala ASP 6 20/08/2006 22:14
server.execute ve sayfa gömmek chaostician ASP 1 10/08/2004 14:45


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 18:15.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net