میثم سلیمانی

مشکل جاوا در کار با دیتابیس mysql

سلام ممنون از وقتی که میذارید
شاید درست نباشه اینجوری سوال رو بپرسم نمیدونم شاید باید 2تا تاپیک میزدم ولی اگه میشه راهنماییم کنید. سیستم عاملم اوبونتو هستش از netbeans و mysql استفاده میکنم
من تازه شروع به برنامه نویسی با جاوا کردم و تو قسمت کار با دیتابیس با مشکل مواجه شدم!!
اول برای اینکه مجبور نشم توی تمام فرم هام کانکشن استرینگ رو بنویسم یه کلاس برای کانکشن استرینگ ساختم و مشخصات کانکشن رو از داخل 3تا فایل متنی که توشون url , username,password رو ذخیره کردم فراخوانی کردم و ازشون استفاده کردم توی کلاس این کدهایی هست که برای کلاس کانکشن نوشتم اسم کلاسمم هم database هستش:

[CODE]/* * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package test;






//کتابخانه ارتباط با دیتابیس
import java.sql.*;
import java.util.logging.Logger;
import java.util.logging.Level;
import javax.swing.JOptionPane;
//کتابخانه ارتباط با دیتابیس
//کتابخانه mysql JDBC Driver باید اضافه شود به کتابخانه ها
//کتابخانه کار بار فایل متنی
import java.io.*;
import java.awt.Color;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Scanner;
import static test.connectiontest.con;
import static test.connectiontest.password;
import static test.connectiontest.url;
import static test.connectiontest.username;
//کتابخانه کار بار فایل متنی




/**
 *
 * @author o_0
 */
public class  database {
    //اتصال به دیتابیس (کانکشن استرینگ)
    public static Connection con = null;
    public static  Statement stmt = null;
    public static  ResultSet resSet = null;
    public static   String username =null;
    public static   String password = null;
    public static   String url = null;
    
    public static ResultSet getResultSet()
    {
        return ( resSet );
    }
    
    public static Connection getConnection()
    {
        return con;
    }
  //اتصال به دیتابیس  
    public static boolean connect_to_db()
    {
        try
        {
             FileReader reader = new FileReader("url.dll");
            BufferedReader bufferedReader = new BufferedReader(reader);
            String line; 
            while ((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
                url =line;
            }
            reader.close();
            
            FileReader readeruser = new FileReader("user.dll");
            BufferedReader bufferedReaderuser = new BufferedReader(readeruser);
            String lineuser; 
            while ((lineuser = bufferedReaderuser.readLine()) != null) {
                System.out.println(lineuser);
                username =lineuser;
            }
            readeruser.close();
            
            
            FileReader readerpass = new FileReader("pass.dll");
            BufferedReader bufferedReaderpass = new BufferedReader(readerpass);
            String linepass; 
            while ((linepass = bufferedReaderpass.readLine()) != null) {
                System.out.println(linepass);
                password =linepass;
            }
            readerpass.close();
            
            
            
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection(url,username,password);
            return true;
            
        }
        catch( Exception e )
        {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "can not connect to db! "
                                                + e.getMessage());
            return false;
        }
    }
   //اتصال به دیتابیس     
    
    //کوئری یا سلکت به دیتابیس
    public static boolean query_on_db( String _query )
    {
        try
        {
            stmt = con.createStatement();
            resSet = stmt.executeQuery( _query );
            
            if( resSet.next() )
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        catch( Exception e )
        {
            JOptionPane.showMessageDialog(null, "can not run query! "
                                                + e.getMessage());
            return false;
        }
    }
    
    //کوئری یا سلکت به دیتابیس


//آبدیت اینسرت و حذف از دیتابیس    
    public static boolean updateQuery(String update_query)
{
    try
    {
        stmt =con.createStatement();
        stmt.executeUpdate(update_query);
                
        return true;


    }
    catch (Exception e)
    {
            JOptionPane.showMessageDialog(null,"can not run update query! " + e.getMessage());
        return false;
    }
}
//آبدیت اینسرت و حذف از دیتابیس       
// دیسکانکت شدن از دیتابیس   
    public static boolean disconnect_from_db()
    {
        try
        {
            if( !con.isClosed() && !stmt.isClosed() && !resSet.isClosed() )
            {
                con.close();
                stmt.close();
                resSet.close();
                return true;
            }
            else
            {
                return true;
            }
            
        }
        catch( Exception e )
        {
            JOptionPane.showMessageDialog(null, "can not close connection!"
                                                + e.getMessage() );
            return false;
        }
    }
}
// دیسکانکت شدن از دیتابیس   [/CODE]
ولی 2تا مشکل دارم:
اول اینکه وقتی select میزنم برای لود شدن داده هام اولین داده ای که داخل دیتابیس ذخیره کردم لود نمیشه یعنی اکه مثلا من 4تا یوزر پس ذخیره کردم شماره 1 لود نمیشه و شماره 2و3و4 فقط توی table لود و نمایش داده میشه چیکار کنم که همه داده هام نمایش داده بشه؟
این کدی هست که برای لود دیتا توی table نوشتم:
[CODE]                if (database.connect_to_db())
        {
            if(database.query_on_db("SELECT * FROM users"))
            {
                tblusers.setModel(DbUtils.resultSetToTableModel(database.getResultSet()));
            }
            database.disconnect_from_db();
        }[/CODE]

و دوم کد سرچ هم درست کار نمیکنه وقتی جستجو میکنم فقط آخرین فیلدی که ذخیره کردم لود میشه یعنی اگه مثلا فیلد دومم توی دیتابیس a باشه جستجو کنم چیزی نمایش نمیده ولی اگه فیلد آخرم توی دیتابیس b باشه سرچ کنم محتویاتش توی تیبل نمایش داده میشه
این هم کد جستجو هستش:

String n = txtsearch.getText();
if (database.connect_to_db())
{

if (database.query_on_db("SELECT * FROM users where Tbl_User like '%"+n+"%'"))
{
try
{

tblusers.setModel(DbUtils.resultSetToTableModel(database.getResultSet()));

database.disconnect_from_db();
}


catch (Exception e)
{
JOptionPane.showMessageDialog(null, e.getMessage()); 
}


}[/JAVA]
#اتصال_به_پایگاه_داده_در_جاوا #برنامه_نویسی_جاوا #آموزش_برنامه_نویسی_جاوا #درج_و_حذف_در_دیتابیس_در_جاوا #مشکل_با_دیتابیس #نمونه_کد_اتصال_به_پایگاه_داده_در_جاوا
لذت یادگیری با توسینسو
به عنوان شخصی که مدت هاست از سایت توسینسو استفاده می کنم باید بگم که واقعاً یکی از بهترین مرجع ها برای ارتقاء دانش شخصی هست. دوره های سایت، راهکارها و مطالب، همگی عالی هستند.
سلام به شما itpro عزیز
برای حل سوال اول شما باید در متد getResultSet این تغییرات را انجام دهید
public static ResultSet getResultSet()
    {
        resSet.beforFirst();
        return ( resSet );
    }
قسمت دوم سوال هم احتمالا با این راه حل درست میشه چون هر بار statement شما یک قدم به جلوتر می رود.


سرنوشت ما با افکارمان تغییر می کند؛ اگر افکارمان همیشه مطابق با خواسته هایمان باشند، همان چیزی می شویم که آرزو داریم و همان کاری را می کنیم که می خواهیم
پاسخ شما
برای ارسال پاسخ خود وارد شوید.
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره بهاره می تونی امروز ارزونتر از فردا خرید کنی ....