نمایش نتایج 1 تا 14 از 14

نام تاپیک: صفحه بندی فراخوانی از mysql در جاوا netbeans

  1. #1

    صفحه بندی فراخوانی از mysql در جاوا netbeans

    سلام
    چطور میشه توی تیبل اطلاعاتی که از دیتابیس فراخوانی میشه صفحه بندیش کرد مثلا توی تیبل اول 10تا سطر اول از دیتابیس فراخوانی بشه دکمه next رو که میزنم از 10تا20 فراخوانی و نمایش داده بشه همینطور الی آخر و برعکس دکمه prev رو که میزنم 10تا 10تا کم کنه مثلا از 90تا 100 برگرده بشه 80تا89 و الی آخر من هرکاری کردم نتونستم مشخصات اتصال به دیتابیس رو توی یک کلاس تعریف کنم بعد توی فرم این عملیات رو درست انجام بدم فایل پروژه رو توی پیوست میذارم اگه میشه راهنماییم کنید یا اگه امکان داره پروژه رو ویرایش کنید برام ممنون میشم
    درضمن من تازه کارم و هنوز 1هفته نیست با جاوا کار میکنم و هرچی هم تو برنامه نوشتم از آموزشهای توی اینترنت یاد گرفتم هیچ کلاسی نرفتم و آموزشی ندیدم
    فایل های ضمیمه فایل های ضمیمه

  2. #2
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: صفحه بندی فراخوانی از mysql در جاوا netbeans

    خب کدت درسته که!
    دکمه اول و بعدی به درستی کار میکنه و دکمه قبلی و آخر رو که اصلا پیاده سازی نکردید. که به طریق مشابه میشه پیاده سازیش کرد.

    اینم خروجی که از برنامه شما گرفتم (بدون هیچ تغییری):

  3. #3

    نقل قول: صفحه بندی فراخوانی از mysql در جاوا netbeans

    نقل قول نوشته شده توسط vahid-p مشاهده تاپیک
    خب کدت درسته که!
    دکمه اول و بعدی به درستی کار میکنه و دکمه قبلی و آخر رو که اصلا پیاده سازی نکردید. که به طریق مشابه میشه پیاده سازیش کرد.

    اینم خروجی که از برنامه شما گرفتم (بدون هیچ تغییری):
    شاید سوالم روبد پرسیدم
    اول فکر میکنم روش کد نویسیم درست نیست
    دوم برنامه شاکال اساسی داره دکمه صفحه بعد کار میکنه درسته ولی به صفحه آخر که میرسه متوقف نمیشه باز هم میره صفحه بعدی
    دوم من یک لیبل گذاشتم به اسم lblpages گفتم تعداد سطرهای دیتابیس رو بشماره بریزه توی اون ولی این عمل انجام نمیشه نمیدونم چرا
    در نتیجه کدی که گذاشتم برای توقف توی صفحه آخر کار نمیکنه مشکل من فقط توی این قسمته البته اگه روشی که باهاش صفحه بندی رو نوشتم درست باشه
    اگه نباشه که کلا باید برنامه اصلاح بشه کدش
    اگه میشه در درجه اول در مورد مشکل دوم یعنی کار نکردن لیبل راهنمایم کنید اون حل بشه برنامم کار میکنه لااقل
    و اگه روحساب تنبلی و پرویی من نمیذارید بگبد روش کدنویسیم درسته یا اشتباه و اگه اشتباهه بگین چطوری باید این برنامه رو با راه بهتری بنویسم ممنون میشم

  4. #4
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: صفحه بندی فراخوانی از mysql در جاوا netbeans

    بذارید در مورد اشتباهات برنامه نویسی صحبت نشه چون همانطور که خودتون هم گفتید یک هفتست شروع کردید و انتظار نمیره خیلی چیزها رو از هفته اول رعایت کنید. از نام کلاس ها گرفته تا خیلی مسائل دیگه مشکل داره (اولین نکته برای نام کلاس ننویسید class... ، مشخصه کلاسه، شما باید اسمش رو بنویسید. مثلا DatabaseManager ). و از اسامی بامسما تری استفاده کنید، paging1 و paging2 خیلی بده.
    ضمنا حتما از پکیج استفاده کن و کدهات رو تو default package نذار. لااقل یه پکیج main درست کن و کلاسهات رو داخل اون بذار. یا بنا به نیاز از پکیج های بیشتری استفاده کن.

    بگذریم، نکات این چنینی زیاده.

    ضمنا نیازی به پیچیده کردن برنامه برای خوندن url از یک فایل دیگه نبود. مستقیم داخل برنامه وارد میکردید.
    کار با دیتابیس یکم کار داره، ولی به هر حال فعلا بهتون جواب میده (هر چند در کد زیر از prepareStatement به جای executeQuery مستقیم استفاده کردم، اینجا مهم نیست ولی علتش رو در اینترنت سرچ کنید).
    ضمنا توصیه میکنم متدی که قراره از دیتابیس اطلاعاتی بگیره از متدی که میخواد اطلاعات رو برای جدول آماده کنه جدا باشه. شما همش رو در متد Query نوشتید که عملا برای دیگر بخش ها بلااستفاده میشه.
    برای همین مجبور شدم برای اینکه بتونم تعداد سطرهای جدول رو بخونم، متد دیگه ای بنویسم. متدی که نوشتم تقریبا از کدهای خودت استفاده کردم، با اندکی تفاوت.
    کلاسی نوشتم به اسم DatabaseUtil که هر کوئری بهش بدی، خروجی رو به صورت یک ArrayList ای از آرایه ای از String ها بهت میده. برای همین هم برای تعداد سطرها به درد میخوره هم برای پرکردن جدولت. این متد کاری به جداول و GUI برنامت نداره و برای همین استقلال بیشتری داره. از متدهای static استفاده کردم (برخلاف اینکه بهشون علاقه ای ندارم )
    این کد DatabaseUtil.java:

    import java.sql.Connection;import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.logging.Level;
    import java.util.logging.Logger;


    public class DatabaseUtil {


    private static Connection con;
    private static String url = "jdbc:mysql://localhost:3306/testconection?user=root&password=123&useSSL=false" ;


    static {
    try {
    Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException ex) {
    Logger.getLogger(DatabaseUtil.class.getName()).log (Level.SEVERE, null, ex);
    }
    }


    public static ArrayList<String[]> executeQuery(String query) {
    String[] row;
    int columnCount;
    PreparedStatement st = null;
    ResultSet rs = null;
    ArrayList<String[]> results = new ArrayList<>();


    try {
    con = DriverManager.getConnection(url);
    st = con.prepareStatement(query);
    st.executeQuery();
    columnCount = st.getMetaData().getColumnCount();

    rs = st.getResultSet();
    while (rs.next()) {
    row = new String[columnCount];
    for (int i = 1; i <= columnCount; i++) {
    row[i - 1] = rs.getString(i);
    }
    results.add(row);
    }
    } catch (SQLException ex) {
    Logger.getLogger(DatabaseUtil.class.getName()).log (Level.SEVERE, null, ex);
    } finally {
    try {
    if (rs != null) {
    rs.close();
    }
    if (st != null) {
    st.close();
    }
    if (con != null) {
    con.close();
    }
    } catch (SQLException ex) {
    System.err.println("Error! " + ex.getMessage());
    }
    }
    return results;
    }
    public static void main(String[] args) {
    System.out.println(DatabaseUtil.executeQuery("sele ct count(*) from users").get(0)[0]);
    ArrayList<String[]> results = DatabaseUtil.executeQuery("select * from users");
    for(String[] res:results){
    System.out.println(Arrays.toString(res));
    }
    }
    }


    اگر این فایل رو اجرا کنید، خط اول تعداد سطرها رو بهتون میده و خطوط بعد داده های جدول users.
    به هر حال این کلاس رو کنار سایر کلاسهات بذار. الان به راحتی داخل کلاس frmpaging میتونید با باز شدن برنامه این کد رو اجرا کنید:
    lblpages.setText(DatabaseUtil.executeQuery("select count(*) from users").get(0)[0]);


    مشکل صفحه بعدی، هم کافیه در این تابعی که نوشتم اگر اندازه خروجی صفر بود (results.size()==0)، جدول رو آپدیت نکنی. اما برای کد خودت تابع btnnextActionPerformed رو اینجوری تغییر بده:
            int index = Integer.parseInt(lblrows.getText());        index = index + 10;
    String sql = "select * from users limit " + index + ",10";
    classtable obj = new classtable();
    DefaultTableModel dtm = obj.Query(sql);
    if (dtm.getRowCount() > 0) {
    lblrows.setText(String.valueOf(index));
    txtpage.setText(String.valueOf(index / 10));
    datatable.setModel(dtm);
    paging_Table();
    String a = txtpage.getText();
    String b = lblpages.getText();
    if (Integer.parseInt(a) >= Double.parseDouble(b)) {
    btnnext.setEnabled(true);
    }
    }


    برای بهتر نوشتن، توصیه میکنم به جای استفاده از متد Query از کلاسی که نوشتم استفاده کنی و فقط برای قرار دادن نتایج در جدول، یک نگاشت ساده (در کلاس frmpaging) از مقادیر ArrayList به TableModel انجام بدید. اینجوری کار توسعه برنامه راحتتر میشه، در غیر این صورت به دردسر بر میخورید.
    کد رو تا اونجایی که تغییر دادم رو پیوست کردم
    فایل های ضمیمه فایل های ضمیمه

  5. #5

    نقل قول: صفحه بندی فراخوانی از mysql در جاوا netbeans

    ممنون خیلی کمک کردی درسته زیاد نفهمیدم چی شد آخه کدها خیلی قاطی و شلوغ شده واسه منه تازه کار مثلا یه مشکلی که بود اینه توی کلاس اومدین فقط یک تیبل رو گذاشتین نمیدونم چطوری باید از این کلاس برای همه تیبل ها توی همه فرمهام استفاده کنم خیلی سخت شده. اون قسمت که گفتم از فایل بخونه کانکشن استرینگ برای این بود که هروقت خواستم بتونم توی فایل برنامه مشخصات دیتابیس رو عوض کنم برای اون هم یک فرم ساختم که مشخصات رو توی url.dll ذخیره میکنه راحتر میشه برام وقتی خروجی exe میگیرم از برنامه میتونم مشخصات مثلا آی پی پورت یوزر یا پس رو هروقت خواستم توی فرم پر کنم ذخیره کنم و بدون اینکه توی کد دست ببرم به سرور جدید وصل بشم روش دیگه ای بلد نبودم آخه
    آخرین ویرایش به وسیله cnmeysam : سه شنبه 19 بهمن 1395 در 01:08 صبح

  6. #6
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: صفحه بندی فراخوانی از mysql در جاوا netbeans

    منظورتون از اینکه یک تیبل رو گذاشتم رو متوجه نشدم.
    ببینید کافیه هر جای برنامه اطلاعات رو از دیتابیس بخونید، اینجوری بنویسی:
    DatabaseUtil.executeQuery("Your query"); خروجی یک ArrayList از String[] میده. که تو کد نمونه ای که در main کلاس DatabaseUtil نوشتم میتونید ببینید چطور میشه اطلاعاتش رو خوند.
    این کد رو هر جای برنامتون میتونید استفاده کنید و چون همه static هستن، نیازی به new کردن آبجکت نیست.

    موفق باشید

  7. #7

    نقل قول: صفحه بندی فراخوانی از mysql در جاوا netbeans

    شرمنده باز به مشکل خوردم نتونستم کاری کنم کلاسی که شما نوشتین کانکشن رو از url من بخونه میشه کمکم کنید؟
    چیکار کنم کلاس شما هم اطلاعات اتصال رو از فایل dll‌ که ساختم بخونه؟؟؟؟

  8. #8
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: صفحه بندی فراخوانی از mysql در جاوا netbeans

    اگر نخوایم زیاد تغییرش بدیم، تو کلاس DatabaseUtil این متد static رو اضافه کن:
    public static void setURL(String urlAddr){        url=urlAddr;
    }

    بعد تو main کلاس اصلی، frmpaging همونطور که قبلا آدرس url رو خوندی رو بخون و DatabaseUtil.setURL(...); وارد کن.
    میشه:
    public static void main(String args[]) {        try(Scanner cin=new Scanner(new File("url.dll"))){
    String url=cin.nextLine();
    DatabaseUtil.setURL(url);
    } catch (FileNotFoundException ex) {
    Logger.getLogger(frmpaging.class.getName()).log(Le vel.SEVERE, null, ex);
    }
    ...
    ...

  9. #9

    نقل قول: صفحه بندی فراخوانی از mysql در جاوا netbeans

    اینجوری هم نشد میشه پروژه رو ویرایش کنید بذارید شرمنده هنوز خیلی ناشی هستم
    https://barnamenevis.org/attachment.p...9&d=1486408466

    import java.sql.*;
    import java.io.*;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Scanner;
    import java.util.logging.Level;
    import java.util.logging.Logger;

    public class DatabaseUtil {

    public static void setURL(String urlAddr)
    {
    url=urlAddr;

    }

    public static Connection con;
    public static Statement stmt ;
    public static ResultSet resSet ;
    public static String url ;

    public static void main(String args[]) {
    try(Scanner cin=new Scanner(new File("url.dll"))){

    String url=cin.nextLine();

    DatabaseUtil.setURL(url);


    } catch (FileNotFoundException ex) {

    Logger.getLogger(frmpaging.class.getName()).log(Le vel.SEVERE, null, ex);

    }

    static {
    try {
    Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException ex) {
    Logger.getLogger(DatabaseUtil.class.getName()).log (Level.SEVERE, null, ex);
    }
    }

    public static ArrayList<String[]> executeQuery(String query) {
    String[] row;
    int columnCount;
    PreparedStatement st = null;
    ResultSet rs = null;
    ArrayList<String[]> results = new ArrayList<>();

    try {
    con = DriverManager.getConnection(url);
    st = con.prepareStatement(query);
    st.executeQuery();
    columnCount = st.getMetaData().getColumnCount();

    rs = st.getResultSet();
    while (rs.next()) {
    row = new String[columnCount];
    for (int i = 1; i <= columnCount; i++) {
    row[i - 1] = rs.getString(i);
    }
    results.add(row);
    }
    } catch (SQLException ex) {
    Logger.getLogger(DatabaseUtil.class.getName()).log (Level.SEVERE, null, ex);
    } finally {
    try {
    if (rs != null) {
    rs.close();
    }
    if (st != null) {
    st.close();
    }
    if (con != null) {
    con.close();
    }
    } catch (SQLException ex) {
    System.err.println("Error! " + ex.getMessage());
    }
    }
    return results;
    }

    }


  10. #10
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: صفحه بندی فراخوانی از mysql در جاوا netbeans

    دقیقا اون دو تکه کد رو اضافه کردم و جواب میده:
    دانلود paging.zip

  11. #11

    نقل قول: صفحه بندی فراخوانی از mysql در جاوا netbeans

    سلام
    شرمنده ولی این فایل که فرستادی همون قبلیست
    اصلا اصلاح نشده کانکشن باز هنوز بصورت دستی ست شده توی کلاس DatabaseUtil فکر کنم فایل رو اشتباهی آپلود کردید
    private static String url = "jdbc:mysql://localhost:3306/testconection?user=root&password=123&useSSL=false"  ;


  12. #12
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: صفحه بندی فراخوانی از mysql در جاوا netbeans

    این مقدار پیشفرضشه که دست نزدم. شما جای این رشته طولانی یک x بذارید بازم جواب میگیرید

  13. #13

    نقل قول: صفحه بندی فراخوانی از mysql در جاوا netbeans

    کاملا گیج شدم چطور اونجا x گذاشتم کار کرد پس url رو از کجا میخونه توی کلاس شما؟ توش کدی اضافه نشده آخه پس کانکشن رو الان از مکجا پیدا میکنه از کلاس paging خودم؟ شرمنده انقدر مزاحم میشم و وقتت رو میگیرما

  14. #14
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: صفحه بندی فراخوانی از mysql در جاوا netbeans

    نقل قول نوشته شده توسط cnmeysam مشاهده تاپیک
    کاملا گیج شدم چطور اونجا x گذاشتم کار کرد پس url رو از کجا میخونه توی کلاس شما؟ توش کدی اضافه نشده آخه پس کانکشن رو الان از مکجا پیدا میکنه از کلاس paging خودم؟ شرمنده انقدر مزاحم میشم و وقتت رو میگیرما
    اگه چند پست قبلتر رو خونده باشید، نوشتم:
    بعد تو main کلاس اصلی، frmpaging همونطور که قبلا آدرس url رو خوندی رو بخون و DatabaseUtil.setURL(...); وارد کن.
    در نتیجه اون کد در متد main کلاس frmpaging اضافه شده. اونجا از فایل میخونه و با setURL این فیلد رو با مقدار جدید جایگزین میکنه.

تاپیک های مشابه

  1. حرفه ای: استفاده از mysql در جاوا
    نوشته شده توسط ghiravani در بخش برنامه‌نویسی جاوا
    پاسخ: 4
    آخرین پست: جمعه 23 تیر 1391, 20:53 عصر
  2. فراخوانی مقادیر از php در جاوا
    نوشته شده توسط iman64 در بخش PHP
    پاسخ: 2
    آخرین پست: چهارشنبه 13 خرداد 1388, 16:50 عصر
  3. طریقه استفاده از فایلها در جاوا ؟
    نوشته شده توسط بابک زواری در بخش برنامه‌نویسی جاوا
    پاسخ: 11
    آخرین پست: چهارشنبه 20 اردیبهشت 1385, 09:02 صبح
  4. استفاده از mysql در برنامه های تحت Desktop
    نوشته شده توسط arash_hemmat در بخش MySQL
    پاسخ: 12
    آخرین پست: سه شنبه 26 مهر 1384, 14:29 عصر
  5. استفاده از MySQL در Win2003
    نوشته شده توسط Farhad.B.S در بخش PHP
    پاسخ: 2
    آخرین پست: سه شنبه 28 بهمن 1382, 20:41 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •