簡體   English   中英

如何在Java中正確地從數據庫檢索數據

[英]how to retrieve data from database correctly in java

我編寫此代碼是為了顯示具有最高薪水的員工的姓名,但是當輸出不正確時,它顯示為null,而不是“ mmm kkk”! 雖然我填了桌子,這是內容:

這里

這是我的代碼,任何人都可以幫助我嗎? :(

 public static void displayMaxSalary() throws ClassNotFoundException, SQLException

{   
    int size=0;
    int count=0;
    String maxSalary=null;
    Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost/task4DB?"
              + "user=root&password=123");
    PreparedStatement st = con.prepareStatement("select * from task4Table ");
    ResultSet r1=st.executeQuery();

      while (r1.next()) {

          size++;
      }


      int salaries[]=new int[size];
      String Names[]=new String[size];

       while (r1.next()) {


          salaries[count]= r1.getInt("salary");
          Names[count]=  r1.getString("fName")+""+r1.getString("lName");
          count++;
      }

       for(int i=1;i< salaries.length;i++)

       {
           if(salaries[i]>salaries[i-1])
           {
               maxSalary= Names[i];
           }

       }


     System.out.println("The name of employee who has the higher salary is :");
     System.out.println( maxSalary);



} //end-displayMaxSalary.

試試這個SQL語句:

select fName, max(salary) from task4table

您的代碼有問題:

在此循環中,您迭代到結果集的末尾:

while (r1.next()) {
    size++;
}

然后,當您想再次迭代時

while (r1.next()) {
    salaries[count]= r1.getInt("salary");
    Names[count]=  r1.getString("fName")+""+r1.getString("lName");
    count++;
}

r1.next()返回false因此不會發生此迭代。 您可以一次循環執行一次,也可以再次執行查詢。 但是,正如我所說,使用max使用適當的sql語句對其進行處理。

您更改查詢以在單個查詢中獲得所有最高薪水人員

PreparedStatement st = con.prepareStatement("
select fName, lName, salary from task4Table where salary = 
(select max(salary) from task4Table)");
ResultSet r1 = st.executeQuery();

迭代此結果集。

您的代碼有很多錯誤,但是這是您的直接問題:您找不到正確的最大值。

正確的方法是使用SQL,正如我上面的答案所示。 如果您堅持要走自己的路,請嘗試以下操作:

int maxSalary = Integer.MIN_VALUE;
for (int i = 0; i < salaries.length; i++) {
    if (salaries[i] > maxSalary) {
        maxSalary = salaries[i];
    }
}

您的編碼風格不好。 您需要在花括號位置,空格,空白行等方面保持一致。還應該記住並遵循Sun Java編碼約定。

嘗試以下代碼:

public static void displayMaxSalary() throws ClassNotFoundException, SQLException

{   

    String maxSalary;
    Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost/task4DB?"
              + "user=root&password=123");
    PreparedStatement st = con.prepareStatement("select * from task4Table order by salary desc limit 1");
    ResultSet r1=st.executeQuery();

     if(r1.next()) {

           maxSalary =  r1.getString("fName")+""+r1.getString("lName");
      }

     System.out.println("The name of employee who has the higher salary is :");
     System.out.println( maxSalary);


} //end-displayMaxSalary.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM