Java'da Veri Tabanı İle İsim Bulma

Merhaba Java’da veritabanı ile alıştırma yapıyordum. Kodum bu:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Random;

public class SQliteFun{
	static String url;
	static void createTable(String namedb) throws SQLException{
		url = "jdbc:sqlite:C:\\Users\\talha\\Desktop\\learningSQlite\\"+namedb+".db";
		String sql = "CREATE TABLE IF NOT EXISTS ogrenciler (\n"
				+ "ad TEXT,\n"
				+ "soyad TEXT, \n"
				+ "numara INTEGER UNIQUE\n"
				+ ");";
		
		Connection conn = DriverManager.getConnection(url);
		Statement st = conn.createStatement();
		st.execute(sql);
		
	}
	
	static void insertData(String name, String lastname, int num) throws SQLException {
		Connection conn = DriverManager.getConnection(url);
		String sql_add = "INSERT INTO ogrenciler(ad,soyad,numara) VALUES('"+name+"','"+lastname+"','"+num+"')";
		Statement st = conn.createStatement();
		st.executeUpdate(sql_add);
	}
	
	static void insertData(String name, String lastname) throws SQLException {
		String sql = "select * from ogrenciler";
		Connection conn = DriverManager.getConnection(url);
		Statement st = conn.createStatement();
		ResultSet rs = st.executeQuery(sql);
		
		Random r = new Random();
		int num = r.nextInt(999)+100;
		String sql_add = "INSERT INTO ogrenciler(ad,soyad,numara) VALUES('"+name+"','"+lastname+"','"+num+"')";
		
		while(rs.next()) {
			if(num == rs.getInt("numara")) {
				num = r.nextInt(999)+100;
			}
			
			else {
				st.executeUpdate(sql_add);
			}
		}
		
		
		
		
		
	
		
	}
	
	static void pullData() throws SQLException {
		String sql = "select * from ogrenciler";
		Connection conn = DriverManager.getConnection(url);
		Statement st = conn.createStatement();  
		ResultSet rs = st.executeQuery(sql);
		
		while(rs.next()) {
			System.out.println("Ad: "+rs.getString("ad")+"   "+"Soyad: "+rs.getString("soyad")+"   "+"Numara: "+rs.getInt("numara"));
		}
	}
	
	static void nameStartWith(String a) throws SQLException {
		String sql = "select * from ogrenciler";
		Connection conn = DriverManager.getConnection(url);
		Statement st = conn.createStatement();  
		ResultSet rs = st.executeQuery(sql);
		
		while(rs.next()) {
			String k = rs.getString("ad");
			if (k.startsWith(a)) {
				System.out.println("Ad: "+k+"   "+"Soyad: "+rs.getString("soyad")+"   "+"Numara: "+rs.getInt("numara"));
			}
			
			else if(!k.equals(a)) {
				System.out.println(a+" ile başlayan bir isim bulunamadı.");
			}
			
			else {
				continue;
			}
		}
	}
	
	static void lastnameStartWith(String a) throws SQLException {
		String sql = "select * from ogrenciler";
		Connection conn = DriverManager.getConnection(url);
		Statement st = conn.createStatement();  
		ResultSet rs = st.executeQuery(sql);
		
		while(rs.next()) {
			String k = rs.getString("soyad");
			if (k.startsWith(a)) {
				System.out.println("Ad: "+rs.getString("ad")+"   "+"Soyad: "+k+"   "+"Numara: "+rs.getInt("numara"));
			}
			
			else {
				continue;
			}
		}
	}
	
	static void numStartWith(int a) throws SQLException {
		String sql = "select * from ogrenciler";
		Connection conn = DriverManager.getConnection(url);
		Statement st = conn.createStatement();  
		ResultSet rs = st.executeQuery(sql);
		
		while(rs.next()) {
			int k = rs.getInt("numara");
			if (Integer.toString(k).startsWith(Integer.toString(a))) {
				System.out.println("Ad: "+rs.getString("ad")+"   "+"Soyad: "+rs.getString("soyad")+"   "+"Numara: "+k);
			}
			
			else {
				continue;
			}
		}
	}
	
	public static void main(String[]args) throws SQLException {
			createTable("ogrenci");

			insertData("Aydın","Yılmaz");
			
			
			pullData();
			System.out.println("");
			System.out.println("-----------------------------------------");
			nameStartWith("Z");
			System.out.println("-----------------------------------------");
			lastnameStartWith("P");
			System.out.println("-----------------------------------------");
			numStartWith(3);
			

	}
}

nameStartWith() fonksiyonunda mesela aranan isim bulunamaz ise a ile başlayan isim bulunamadı. diyor. Lakin şöyle bir sorun var veritabanında ne kadar veri varsa o kadar bunu yazdırıyor. Bunu nasıl engellerim.

nameStartWith():

static void nameStartWith(String a) throws SQLException {
		String sql = "select * from ogrenciler";
		Connection conn = DriverManager.getConnection(url);
		Statement st = conn.createStatement();  
		ResultSet rs = st.executeQuery(sql);
		
		while(rs.next()) {
			String k = rs.getString("ad");
			if (k.startsWith(a)) {
				System.out.println("Ad: "+k+"   "+"Soyad: "+rs.getString("soyad")+"   "+"Numara: "+rs.getInt("numara"));
			}
			
			else if(!k.equals(a)) {
				System.out.println(a+" ile başlayan bir isim bulunamadı.");
			}
			
			else {
				continue;
			}
		}
	}

Output:

Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.

neden 2 tane else var öğrenebilir miyim?

1 Beğeni

Onların biri else if, yani pythondaki elif.

Ama kodun bu hali ile son else gereksiz.


Hatanın sebebi belli zaten, yazdırma işlemi döngü içerisinde yapılıyor. bool bir değişkeni false olarak tanımlayıp şartı sağlayan bir isim bulunduğunda true yapabilirsin, en son da bu değişkeni kontrol edersin.

1 Beğeni

Lakin önemsiz de olsa şöyle bir şey var sizin dediğiniz gibi boolean değişkeni false yaptım ama bu seferde değişken false olduğundan ilk döngü döndüğünde bir kere a ile başlayan bir isim bulunamadı.

Ve bir şey daha buldum mesela veritabanında olmayan bir harf olduğu zaman hep şunu döndürüyor yine hep false’da kaldığı için.

	static void nameStartWith(String a) throws SQLException {
		String sql = "select * from ogrenciler";
		tf = false;
		Connection conn = DriverManager.getConnection(url);
		Statement st = conn.createStatement();  
		ResultSet rs = st.executeQuery(sql);
		
		while(rs.next()) {
			String k = rs.getString("ad");
			if (k.startsWith(a)) {
				System.out.println("Ad: "+k+"   "+"Soyad: "+rs.getString("soyad")+"   "+"Numara: "+rs.getInt("numara"));
				tf = true;
					
			}
			
			else if(tf == false) {
				System.out.println(a+" ile başlayan bir isim bulunamadı.");
				
				
			}

		}
	}

Output:

Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.
Z ile başlayan bir isim bulunamadı.

Döngünün içindeki else if bloğunu kesip döngü sonuna if olarak kopyalayın.

1 Beğeni

Teşekkür ederim çözüldü.