JSP ile Veri Tabanına Kayıt Ekleme (MySql)
JSP Dersimizin bu bölümünde JSP ile Veri tabanına kayıt ekleyeceğiz.
*
JSP Sayfamızda Ad, Soyad ve İl alanlarımız olacak. Kullanıcı bu formu doldurup kaydet butonuna basacak ve bu bilgiler veritabanımıza kayıt olacak.
*
Formumuzu resimdeki gibi tasarlayacağız.
Jsp ile Kayıt Formu
Bu tasarımın kodları ise
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Kayıt Formu Burak Kutbay</title> </head> <body> Kayıt Formunu Lütfen Doldurunuz. <form id="form2" name="form2" method="post" action="kontrol.jsp"> <table> <table width="200" border="1"> <tr> <th><label for="AD">ADINIZ </label></th> <th><input type="text" name="AD" id="AD" /></th> </tr> <tr> <th> <label for="SOYAD">SOYADINIZ</label></th> <th><input type="text" name="SOYAD" id="SOYAD" /></th> </tr> <tr> <th><label for="il">İLİNİZ</label></th> <th> <input type="text" name="il" id="il" /></th> </tr> <tr><th></th><th><input type="submit" name="gonder" id="gonder" value="KAYIT OL" /></th></tr> </table> </form> </body> </html>
Bu sayfamızın form elementi “post” yolu ile verilerimizi kontrol.jsp sayfasına gönderecek. Bütün işlem kontrol ettirme sayfasında olacak ve haliyle de java kodlarımız da o sayfada olacak.
Konrol.jsp sayfasında yapılacak işlem eğer verilerimiz veritabanımıza kayıt oldu ise Kaydınız Veritabanımıza Yapıldı. Yapılmadığı bir durumda ise Kaydınız Veritabanımıza yapılmadı yazısı gösterecektir.
Şimdi Kontrol.Jsp sayfamızı yazalım.
Bu sayfamızda dikkat edilecek husus kayıt ol formundaki elementlerin “name” lerini almak olacak.
Jsp Sayfamızda import edeceğimiz kütüphaneleri ekleyelim öncelikle.
<%@ page import="java.io.*" %> <%@ page language="java" import="java.sql.*"%> <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
Bu kodlarla dil tanımlarımızı ve kütüphanelerimizi ekledik. Şimdi yapacağımız işlem ise formdan kontrol.jsp sayfamıza gelen verileri almak olacak.
String ADI = request.getParameter("ADI"); String SOYAD = request.getParameter("SOYAD"); String il = request.getParameter("il");
Koddan da anlaşıldığı üzere request.getParameter fonksiyonu diğer formdan gelen verileri almaktadır.
Şimdi Veritabanı bağlantımızı yapalım. Jsp Veritabanı Bağlantısını detaylı olarak anlatmıştım.
<% String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8"; Connection con = null; int id = 0; try { Class.forName(driver); } catch (Exception e) { System.exit(0); } try { con = DriverManager.getConnection(url, "root", "root"); } catch (Exception e) { System.exit(0); } %>
Buraya kadar neler yaptık bir bakalım.
- Kayıt Formu oluşturduk.
- Kontrol sayfamızdan parametreleri aldık
- Mysql bağlantımızı yaptık.
Şimdi sıra geldi bu verileri veritabanımıza kayıt etmeye.
Verilerimizi veritabanımıza kayıt etmenin bir çok yolu var ama ben PreparedStatement denilen yöntemle yapacağım.
Veritabanımıza kayıt işlemi için gerekli kodlarımızı yazalım. Açıklamayı ise ardından.
<%try { PreparedStatement preStmt; preStmt = con.prepareStatement("INSERT INTO KULLANICI(ADI,SOYAD,il) VALUES (?,?,?)"); preStmt.setString(1, AD); preStmt.setString(2, SOYAD); preStmt.setString(3, il); preStmt.executeUpdate(); preStmt.close(); con.close(); out.println("Kaydınız Veritabanımıza Yapıldı") } catch (Exception e) { out.println("Kaydınız Veritabanımıza yapılmadı") } %>
PreparedStatement değişkenimizi yazdık ve o değişkene SQL komutunu yazdık. Values kısmındaki değişkenleri aynı veri tipine göre sırasına göre yazdık. preStmt.executeUpdate() komutu ile veritabanımıza gönderdik ve kapattık. En son olarak ise bağlantımızı kapattık.
çok güzel bi yazı çok işime yaradı yalnız burdaki herşeyi adım adım yaptım ama veritabanına kayıt yapılamadı diyo neden olabilir? şimdiden teşekkür ederim 🙂
Teşekkür ederim. Veritabanına kayıt yapılamadı hatası alıyorsanız.
try {
PreparedStatement preStmt;
preStmt = con.prepareStatement(“INSERT INTO KULLANICI(ADI,SOYAD,il) VALUES (?,?,?)”);
preStmt.setString(1, AD);
preStmt.setString(2, SOYAD);
preStmt.setString(3, il);
preStmt.executeUpdate();
preStmt.close();
con.close();
out.println(“Kaydınız Veritabanımıza Yapıldı”)
}
kod öğesini tekrar inceleyin. Veritabanınızda ki alanlar kadar ? koymanız gerekmekte. Ve alan adlarınızın aynısını sql sorgusundaki ile aynısı olmasına dikkat etmenizi öneririm.
tamam çok teşekkür ederim sorunu hallettim veritabanı kısmında hata yapmışım tekrar teşekkürler 🙂
bu bağlantıyı sql ile yapmam lazım ama sürekli hata alıyorum yardımcı olabilirmisiniz? Teşekkürler
Sql derken kastınız MsSql mi?
evet mssql i kastettim. bağlantıda hep sorun yaşıyorum bu tarz bi örneğiniz varsa benimle paylaşırsanız çok sevinirim…
Merhaba;
JSP ile bir script yazarken mysl baglantısını nasıl yapmamız gerekiyor? yani veri tabanı işleminden önce bağlantı kodlarını tekrarmı yazacağız?
php deki gibi bir method oluşturup o methodu kullanarak yapabiliyormuyuz?
Evet bir method ya da class yapıp tekrar tekrar kullanabilirsiniz. Yapmanız gereken sadece bağlantı kodlarını bir class’a alıp jsp sayfasına import ederek değerleri çekmek.
iyi günler bende textboxlardan bilgi alıp mysqldeki tabloya eklemek istiyorum yardım edermisiniz ?
iyi sabahlar burak bey,
Yaptıklarınızı adım adım izledim ve gerçekleştirdim. Fakat kontrol.jsp ye post edilince localhosta bağlanamıyor. Sebebini anlamadım. Sizce ne gibi bir hata olabilir?
Teşekkürler.
Sorunu buldum. Post edilince Tomcat kapanıyormuş. İyi de neden oluyor onu çözemedim. Böyle bir sıkıntı yaşadınız mı hiç ?
Samet bey merhabalar, Tomcat’ın kapanması sorununu çok fazla yaşayanlardan biriyim. Sebebi ise Debug yapıldığında bir sorun var ve bunu ayrıştıramadığı zaman Tomcat kırılıyor ve kapanmasını sağlamakta.
bi konu hakkında acil yardım istiyorm ltfen acil yardım burk bey
sessionla kullnıcı girişi olcak . sessionla baska sayfalara giren kullanıcınn adı tüm sayfalarda gözkcek. başlık ve duyuru ekleme sayfası olcak baska sayfada bu ekelenen leri göstericek ltfen yapıp yollarmısın bu notlar karışık geldi mezun olamıyorm allah rızası için yardım…
bi konu hakkında acil yardım istiyorm ltfen acil yardım burk bey
sessionla kullnıcı girişi olcak . sessionla baska sayfalara giren kullanıcınn adı tüm sayfalarda gözkcek. başlık ve duyuru ekleme sayfası olcak baska sayfada bu ekelenen leri göstericek ltfen yapıp yollarmısın bu notlar karışık geldi mezun olamıyorm allah rızası için yardım…
bahsi geçen kodları kopyala yapıştır ile jsp dosyalarına attım, çalışmadı. çalışan kodunuzu zip leyip gönderebilir misiniz? neresi yanlış bulamadım.
Bu çalışan kodlardır Fatih bey, Hatayı yazarsanız net bir şekilde yardımcı olabilirim. Ancak
String url = “jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8”; adresindeki veritabanı yolunu kendinizi vt yolunuzu yazmalısınız.
preStmt = con.prepareStatement(“INSERT INTO KULLANICI(ADI,SOYAD,il) VALUES (?,?,?)”); satırındaki sql sorgusunu veritabanınızın kolonlarına uygun olmalıdır.
Bunlar gözünüzden kaçmış olabilir Fatih bey.
jsp-ni degil de servleti controller gibi yaparsak daha iyi olur bence
Bİrader ben bişey sorucam yukarıdaki örnekde privary key(id gibi bişi) belirtmemişin veritabanıına eklerken sıkıntı
olmayacak mı bana yanıtı dönebilirmisin
O sizin veritabanınızın yapısına kalmış ister ekleyin ister eklemeyin. Ancak id eklenmesi tavsiye edilir.