Aşağıdaki işleve sahibim ve bir sınıfa kayıtlı öğrencilerin sayısını sınıf sınıfı ile karşılaştırmaya çalışıyorum. Kayıtlı numara sınıftan büyükse, "Tam ise Sınıf" yazan bir mesaj vermek istiyorum.ayrıştırma SQL sayısı (*)
Bu şekilde sayılara SQL ifadelerini dönüştürmek ve karşılaştırmak için çalışıyorum, ancak hat üzerinde bir java.lang.NumberFormatException alıyorum:
int currentNumberInClassAsInt selectedClass değişken bir kullanıcı tarafından girilen olduğu
. onlar kayıt istediğiniz sınıfın sayı
public static void classFullCheck() {
try {
String currentNumberInClassAsString = ("SELECT class_id, COUNT(*) FROM ClassSelector.student_x_class WHERE class_id = " + selectedClass);
rs = myStmt.executeQuery(currentNumberInClassAsString);
int currentNumberInClassAsInt;
if(rs.next()){
currentNumberInClassAsInt = rs.getInt(1);
}
String classSizeAsString = ("SELECT class_size FROM ClassSelector.classes WHERE class_id = " + selectedClass);
rs = myStmt.executeQuery(classSizeAsString);
int classSizeAsInt;
if(rs.next()){
classSizeAsInt = rs.getInt("class_size");
}
if (currentNumberInClassAsInt > classSizeAsInt){
System.out.println("Sorry, this class is Full!");
}
} catch (java.sql.SQLException SQL) {
SQL.printStackTrace();
}
}
My SQL Tablo düzenidir:
öğrenci
student_id | öğrenci_adı | memleketi
sınıflar
class_id | class_name | Açıklama class_size
student_x_class
student_id | öğrenci_adı | class_id | class_name
Gerekli bilgilerden vazgeçersem haberim olsun. Herhangi bir tavsiye takdir edilecektir!
Şu andan itibaren, deyimi içeren Dizeyi ayrıştırmaya çalışıyorsunuz. – TheMirrox
Bu kod sql enjeksiyonuna karşı hassas görünüyor. Yürütülecek bir dize oluşturmak yerine parametreli sorgular kullanmalısınız. –
@SeanLange, teşekkürler, bu iyi bir nokta, bunu yapacağım! –