View Full Version : حرفه ای: بستن Connection و خالی شدن ResultSet
L u k e
یک شنبه 08 اسفند 1389, 09:33 صبح
سلام من یه مشکل با JDBC دارم اینه که وقتی کانکشن رو می بندم ResultSet خالی می شه
بیشتر جاها همین جوریه ولی من یه متد دارم که یه Query اجرا می کنه و یه ResultSet پاس می ده حالا اگه بعد از انجام Query کانکشن رو ببندم ResultSet ای که برگشت داده می شه خالی می شه
باید چی کنم به نظرتون ؟
javaphantom
یک شنبه 08 اسفند 1389, 09:59 صبح
سلام من یه مشکل با JDBC دارم اینه که وقتی کانکشن رو می بندم ResultSet خالی می شه
بیشتر جاها همین جوریه ولی من یه متد دارم که یه Query اجرا می کنه و یه ResultSet پاس می ده حالا اگه بعد از انجام Query کانکشن رو ببندم ResultSet ای که برگشت داده می شه خالی می شه
باید چی کنم به نظرتون ؟
خوب connection رو نبند. query که زدی وقتی resultSet پر شد مقادیر رو توی یک Object نگه دار بعد connection رو ببند
L u k e
یک شنبه 08 اسفند 1389, 12:22 عصر
خوب تابع من فقط وظیفش اجرای کوئریه نمی دونه که مقادیر چیه ؟ اجرا می کنه ResultSet رو پاس می ده به یه تابع دیگه بعد اون مقادیر و می خونه از رو ResultSet و از برنامه خارج می شه
نمی شه این ResultSet رو بریزم توی یه چیزی که پایدار باشه و کانکشن رو ببندم و اون و پاس بدم به توابع و از رو اون دیتا رو بخونن
javaphantom
دوشنبه 09 اسفند 1389, 15:26 عصر
کد رو که نوشتی بزار اینجا تا برات درستش کنم
mazdadoost
سه شنبه 10 اسفند 1389, 20:38 عصر
CachedRowSet (http://www.javaworld.com/jw-02-2001/jw-0202-cachedrow.html)!
ویژگی های Resulset رو داره ولی نامتصل!
البته شاید این دقیقا همونی نباشه که می خوای!:خجالت:
L u k e
یک شنبه 21 فروردین 1390, 16:44 عصر
public static Connection Cn = null;
public static PreparedStatement Stat = null;
public static ResultSet Res = null;
public static ResultSet Execute_Sp_Select(String SpName, Object... Params) {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Cn = DriverManager.getConnection(ConnectionString, UserName, Password);
Stat = Cn.prepareCall("{ call " + SpName + " }");
for (int i = 1; i <= Params.length; i++) {
Stat.setObject(i, Params[i - 1]);
}
Res = Stat.executeQuery();
} catch (Exception ex) {
General.Loging("Execute Sp Select (" + Stat.toString() + " ) : " + ex.getMessage());
}
return Res;
}
این کدیه که یه Store Prodecure رو اجرا می کنه
و این تابع ResultSet رو می خونه و شی رو پر می کنه
public static E_Brand ToObj(ResultSet res, boolean from) {
E_Brand item = new E_Brand();
try {
if (from) {
res.next();
}
item.Name = res.getString("Brand_Name");
item.Parent = Integer.valueOf(res.getString("Brand_Parent"));
item.ID = Integer.valueOf(res.getString("Brand_Id"));
item.Group = res.getString("Brand_Group");
} catch (Exception ex) {
item = null;
General.Loging("Brand Convertor : " + ex.getMessage());
}
if (from) {
SQL.Close();
}
return item;
}
این تابع SQL.Close(); ه که بعد از اجرای هر کوئری وار می داره Connection و ResultSet و Statment رو می بنده
public static void Close() {
try {
if (Res != null) {
Res.close();
}
if (Stat != null) {
Stat.close();
}
if (Cn != null) {
Cn.close();
}
} catch (Exception ex) {
General.Loging("Close : " + ex.getMessage());
}
}
و اینجوری صداشون می زنم
return C_Brand.ToObj(SQL.Execute_Sp_Select("Tbl_Brands_SelectById(?)", Id), true);
L u k e
یک شنبه 21 فروردین 1390, 16:48 عصر
مشکلمو خالی شدن ResultSet نیست الان مشکلم اینه که Error های مختلف می گیرم و 100 % 100 یه جای این کد مورد داره که این جوری داره می لنگه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.