PDA

View Full Version : سوال: ارسال مقادیر داخل فیلد به بیرون از حلقه



ravand
یک شنبه 23 مهر 1391, 11:19 صبح
سلام.
من با استفاده از این حلقه مقادیر داخل دیتابیسم رو ردیف میکنم.
} while(rs.next()){
sal=rs.getString(2);
mah=rs.getString(3);
roz=rs.getString(4);
System.out.println(mah);
}
الان با این دستور من امدم مقادیر داخل فیلد در جدولم رو پشت سر هم ردیف کردم
System.out.println(mah);
حالا اگه من بیام و این دستور System.out.println(mah); از حلقه بدم بیرون دیگه همه ی مقادیر فیلد رو چاپ نمیکنه و فقط آخرین مقدار فیلد رو چاپ میکنه.
من قصد دارم تا همه ی مقادیر داخل فیلد رو به بیرون از حلقه ارسال کنم .
من قبلا برای اینکار در php از آرایه و دستور foreach استفاده میکردم حالا فهمیدم با دستور for در جاوا میشه این کار رو کرد ولی نمیدونم چرا هر کاری میکنم نمیشه.
ممنون میشم راهنماییم کنید.
متشکرم.

spiderman200700
یک شنبه 23 مهر 1391, 12:34 عصر
اگه میشه لطفا منظورتونو از ردیف کردن بفرمایید تا بهتر بشه راهنمایی کرد

ravand
یک شنبه 23 مهر 1391, 13:30 عصر
منظور از ردیف کردن چاپ کردن هست.
من با این حلقه مقادیر داخل فیلد از جدول را چاپ میکنم.یعنی دستور زیر:
System.out.println(mah);
این دستور مقادیر داخل فیلد mah را پشت سر هم چاپ میکنه ولی وقتی این دستور از حلقه یعنی { خارج میشه دیگه همه ی مقادیر این فیلد چاپ نمیشه و فقط یک مقدار اونم اخرین مقدار چاپ میشه . و من میخوام وقتی متغییر mah را از حلقه خارج میکنم بتونم همه ی مقادیر را دریافت کنم.

ravand
سه شنبه 25 مهر 1391, 20:00 عصر
گفتم بیام و سوالم رو بهتر مطرح کنم:
منظورم از ردیف کردن مقادیر . چاپ هر رکورد از جدول هست:
توضیحات بیشتر:
من با یه حلقه ی while مقادیر داخل دیتابیس رو چاپ میکنم به شکل زیر:

} while(rs.next()){
sal=rs.getString(2);
mah=rs.getString(3);
roz=rs.getString(4);
System.out.println(mah);
}
الان با دستور زیر امدم مقادیر داخل یک فیلد رو پشت سر هم چاپ کنم

System.out.println(mah);
ولی وقتی این دستور رو از داخل حلقه و آکولاد {} بیرون میارم دیگه تمام مقادیر یه فیلد رو پشت سر هم چاپ نمیکنه و فقط یک مقدار اونم آخرین مقدار (رکورد) رو چاپ میکنه . ولی من میخوام وقتی از حلقه امد بیرون همه ی رکورد ها (مقادیر) رو دریافت کنه.
من این کار رو با استفاده از دستور for انجام دادم ولی این دستور هم یه حلقه هست و این مانع از انجام کار من میشه و توی استفاده از رکوردها آزادی ندارم.
متشکرم.

spiderman200700
سه شنبه 25 مهر 1391, 20:45 عصر
این خط رو اینطوری بنویس:
mah+=" , "+rs.getString(3);

ravand
چهارشنبه 26 مهر 1391, 09:30 صبح
متشکرم.
من الان دو تا مشکل پیدا کردم . یکی اینکه وقتی به این دستور مقادیر رو چاپ میکنم یه مقدار null هم به همراهش چاپ میکنه. من تونستم با دستور replace
این null رو حذف کنم و عددی جاش بذارم. ولی آیا میشه کلا کاری کرد که مقدار null رو چاپ نکنه؟
دوم اینکه. من اصلا این کارا رو کردم که مقادیری که بهم میده رو با یک مقدار دیگه توی شرط بررسی کنم. بررسی کنم که آیا این مقادیر(رکوردها) با فلان مقدار مساوی هست یا نه؟ برای همین فکر میکنم باید مقادیر(رکوردها) به صورت آرایه بشن که من پشت سر هم با اون مقدار فلان در دستور شرط بررسیش کنم.
ولی نمدونم چرا به صورت آرایه در نمیان:
package testi;
import java.sql.*;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Calendar;
import javax.swing.JOptionPane;
public class shamsi {
static String daghi,daghis;
static String daghigheaa,dagh;
public static void main(String[] args) throws SQLException {
String dbURL="jdbc:h2:~/test";
String query="SELECT * from timer";
Statement stmt = null;
ResultSet rs = null;
String userName = "sa";
String userPwd = "";
Connection con;
try { Class.forName("org.h2.Driver");
con = DriverManager.getConnection(dbURL, userName, userPwd);
System.out.println("Connection Successful!");
stmt = con.createStatement();
rs=stmt.executeQuery(query);
}
catch(Exception e) {
e.printStackTrace();
} while(rs.next()){
daghi+=rs.getString(5);
daghis = daghi.replace("null", "300");
}
String[] daghighei = {daghis};
for (String daghighea : daghighei) {
System.out.println(daghighea);
dagh=daghighea;
}
System.out.println(dagh);
System.out.println(" ");
}
}

spiderman200700
چهارشنبه 26 مهر 1391, 22:39 عصر
بررسی کن اگه null نبود عمل الحاق رشته رو انجام بده.

اگه میخوای مقادیر رو توی یه آرایه نگهداری کنی ، میتونی از ArrayList استفاده کنی.

ravand
پنج شنبه 27 مهر 1391, 07:24 صبح
بررسی کن اگه null نبود عمل الحاق رشته رو انجام بده.
مشکل اینه که مقداری توی جدول در دیتابیس خالی نیست. و این برنامه بی جهت پیام null رو به همراه رکوردهای دیگه چاپ میکنه.

spiderman200700
پنج شنبه 27 مهر 1391, 14:41 عصر
به هیچ وجه نباید null به رشته اضافه بشه.
حتما توی دیتا بیس یه مشکلی وجود داره. باید خوب بررسی کنی

ravand
دوشنبه 01 آبان 1391, 10:40 صبح
به هیچ وجه نباید null به رشته اضافه بشه.
حتما توی دیتا بیس یه مشکلی وجود داره. باید خوب بررسی کنی

بازم دیتابیس رو چک کردم من هیچ مقدار خالی به دیتابیس ارسال نکردم بازم مقدار null رو به همراه مقادیر دیگه چاپ میکنه