2013-07-18 42 views
0

我已經寫了一個程序在java中使用get和set方法....但它沒有給我所需的輸出它告訴插入finally finally塊我的代碼在下面給出..蝕它示出僅連接的控制檯,但沒有表的值來顯示插入「最後」來完成代碼

 package com.glomindz.mercuri.dao; 

import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.ArrayList; 
import java.util.List; 

import com.glomindz.mercuri.pojo.User; 
import com.glomindz.mercuri.util.MySingleTon; 

    public class UserServicesDAO { 

private Connection connection; 

public UserServicesDAO() { 
    // connection = new MySingleTon().getConnection(); 
    connection = MySingleTon.getInstance().getConnection(); 

} 

public List<User> get_all_data() { 
    List<User> usersList = new ArrayList<User>(); 
    String query = "SELECT * FROM spl_user_master"; 
    try { 
     PreparedStatement stmt = connection.prepareStatement(query); 
     boolean execute = stmt.execute(); 
     System.out.println(execute); 
     ResultSet resultSet = stmt.getResultSet(); 
     System.out.println(resultSet.getMetaData()); 
     while (resultSet.next()) { 
      User user = new User(); 
      user.setId(resultSet.getInt("id")); 
      user.setName(resultSet.getString("name")); 
      user.setEmail(resultSet.getString("email")); 
      user.setMobile(resultSet.getString("mobile")); 
      user.setPassword(resultSet.getString("password")); 
      user.setRole(resultSet.getString("role")); 
      user.setStatus(resultSet.getString("status")); 
      user.setLast_udpate(resultSet.getString("last_update")); 
      usersList.add(user); 
     } 
    } 
    } 

    public List<User> set_all_data() { 
     List<User> usersList = new ArrayList<User>(); 
     try { 
      PreparedStatement stmt = connection.prepareStatement("INSERT INTO spl_user_master(name,email,mobile,password,role,status,last_update)VALUES(?,?,?,?,?,?,?)"); 
      stmt.setString(1, "Charlie Sheen"); 
      stmt.setString(2, "[email protected]"); 
      stmt.setString(3, "9554087107"); 
      stmt.setString(4, "cbf91a71c21d5ec348b0c749b2f0055k"); 
      stmt.setString(5, "user"); 
      stmt.setString(6, "3"); 
      stmt.setString(7, "2013-07-02 22:05:16"); 


      boolean execute = stmt.execute(); 
      System.out.println(execute); 
      stmt.getResultSet(); 

     } 

     catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    return usersList; 
     } 


     public static void main(String[] args) { 
    UserServicesDAO userdao = new UserServicesDAO(); 
    List<User> data = userdao.get_all_data(); 
    List<User> data1 = userdao.set_all_data(); 
    System.out.println(data); 
    System.out.println(data1); 
    System.exit(0); 
       } 
        } 

什麼錯誤的代碼PLZ指定

+3

你不能有一個孤立的'try':它必須跟着'catch','finally'或兩者。 – assylias

+0

'get_all_data'中的try {'子句的目的是什麼? –

+1

你的第一次嘗試需要一個關聯finally或catch塊 – RNJ

回答

4

在java中,try塊必須遵循或者由catchfinally塊。在你的代碼中你有下面的try塊,它後面沒有catch/finally塊。

try { 
     PreparedStatement stmt = connection.prepareStatement(query); 
     boolean execute = stmt.execute(); 
     System.out.println(execute); 
     ResultSet resultSet = stmt.getResultSet(); 
     System.out.println(resultSet.getMetaData()); 
     while (resultSet.next()) { 
      User user = new User(); 
      user.setId(resultSet.getInt("id")); 
      user.setName(resultSet.getString("name")); 
      user.setEmail(resultSet.getString("email")); 
      user.setMobile(resultSet.getString("mobile")); 
      user.setPassword(resultSet.getString("password")); 
      user.setRole(resultSet.getString("role")); 
      user.setStatus(resultSet.getString("status")); 
      user.setLast_udpate(resultSet.getString("last_update")); 
      usersList.add(user); 
     } 
    } // missing catch/finally statements 

您可以添加一個catch塊來處理在上面的try代碼塊中發生的任何異常,或者放一個finally塊。一個try塊的一般結構是

try { 
    code 
} 
catch and finally blocks . . . 

瞭解更多關於Java異常處理在這裏:http://docs.oracle.com/javase/tutorial/essential/exceptions/handling.html

+0

它在數據庫表中工作它被更新但是在我的eclipse控制檯中顯示輸出 true com.mysql.jdbc。ResultSetMetaData @ 117e889 false 和以前的數據,但沒有更新後的表中有新值爲什麼PLZ回答我 – user2594590

0

你不分配stmt.getResultSet();任何事情! UserList是一個空列表,因爲沒有添加任何內容。你需要添加stmt.getResultSet()的結果;到名單。

對於終於:在最後的代碼塊將被肯定執行 - 但它是不是當然!最後使用關閉數據庫連接或其他清理工作。或者更好的是,根本不要使用它。 http://my.safaribooksonline.com/book/programming/java/9780137150021/creating-and-destroying-objects/ch02lev1sec7

使用一個catch塊捕獲錯誤

+0

如何添加plzz通過編寫代碼指定我 – user2594590

+0

請參閱Juned Ahsan的文章! – Mirco

1

你不能只有一個try塊。要有一個try塊,你必須至少有一個catch塊或finally塊

1

,如果你想捕捉異常你需要一個catch塊。

try { 
.... 
} catch (Exception e) { 
.... 
} 

如果使用嘗試,最後組合,注意儘量有只有允許最後