2016-04-05 18 views
1

jdbc textfield'den mysql DB'ye veri eklemek için bir kod yazdım. Bu kod Kids değişkeninde İsteğe bağlı alan değerlerini jdbc'den mysql'ye ekle

String res ="INSERT INTO reservation(check_in_date,check_out_date,cus_id,room_no,Username,nights,adults,kids) VALUES ('"+Startdate+"','"+Lastdate+"','"+cusNo+"','"+Roomno+"','"+Username+"','"+Nights +"','"+Adults +"','"+Kids +"')"; 

stm=link.prepareStatement(res); 
stm.execute(); 

boş olabilir ve ben veritabanını içinde null olarak varsayılan değeri de belirledik.

Ancak GUI'den veri girdiğimde her zaman Kids için değerler girmeliyim, aksi takdirde tabloya veri ekleyemiyorum. Bu alanı kullanmam gerekmiyorsa, Kids numaralı telefona her zaman sıfır girmeliyim. Kids girişi olmaksızın bu alanı kullanmanız gerekmediğinde veri eklemek için herhangi bir yol var mı?

cevap

0

. Değerleri bir sorguda birleştirmemelisiniz, ancak bunun yerine parametre yer tutucularını kullanmalısınız. Bu, SQL enjeksiyonunu engeller ve genellikle daha temizdir.

Değerleri null olarak ayarlayabilirsiniz.

String res = "INSERT INTO reservation(check_in_date,check_out_date,cus_id,room_no,Username,nights,adults,kids)" 
     + " VALUES (?,?,?,?,?,?,?,?)"; 
try (PreparedStatement stm=link.prepareStatement(res)) { 
    stmt.setDate(1, startDate); 
    // ... other variables 

    // Option 1, assuming kids is an object (eg Integer) 
    stm.setObject(7, kids); 

    // Option 2, kids is int and other condition used to determine if null, 
    // explicitly set null or set value: 
    if (kidsIsNull) { 
     stm.setNull(7, Types.INTEGER); 
    } else { 
     stm.setInt(7, kids); 
    } 
    stm.executeUpdate(); 
} 
1

Eğer böyle PreparedStatement şey için SetNull yöntemi kullanmak mantık ekleyebilir deyimi hazırlamak kullandığınız gibi: Sen yanlış PreparedStatement kullanıyorsunuz

if(kids == null){ stm.setNull(#ParamerterNo ,java.sql.Types.INTEGER); }else{ stm.setInt(#ParamerterNo ,kids); }

+0

#ParamerterNo tarafından anlam nedir? –

+1

#ParameterNo yerine, değiştirilmiş olan çocuklardaki parametre yok. – Vijay