的問題也許有人可以幫助我。我正在使用數據訪問對象。 我有一個數據庫: 表Receiverz與DAO和單身人士一起工作,代碼
num name
1 Walmart
2 Target
3 McDonalds
我創建了一個類此表
public class Receiverz {
private int num;
private String name;
public void setNum(int num) {
this.num = num;
}
public void setName(String name) {
this.name = name;
}
}
然後,我創建DAO接口,並通過一個方法吧:
public interface Dao {
Receiverz getReceiverz(int num);}
然後,我創建了一個類ExpensesDao是impleme NTS道,並在它創建了一個單身(我ASLO建立與數據庫的連接,但我會跳過這一部分),並使它能夠用數據庫的工作推翻getReceivers(INT NUM)方法:
public class ExpensesDao implements Dao {
private static Dao thisdao;
public static synchronized Dao getDao() {
if (thisdao==null) {
thisdao = new ExpensesDao();
}
return thisdao;
}
@Override
public Receiverz getReceiverz(int num) {
Receiverz receiver = new Receiverz();
try {
Statement stmt = myConnection.createStatement();
ResultSet result = stmt.executeQuery("SELECT * FROM receiverz");
while(result.next()){
receiver.setNum(num);
receiver.setName(result.getString(2));
}
}
catch (SQLException e){
System.out.println(e.getMessage());
}
return receiver;
}
當我嘗試在主類中運行:
public class TryDatabase {
public static void main(String[] args) {
Dao ex = ExpensesDao.getDao();
System.out.println(ex.getReceiverz(2));
我得到的是:
[email protected]
,但我得
2 Target
(因爲我在參數中傳遞了2,它指向我的數據庫中的Target。 沒有人知道什麼是錯的,我應該改變我的代碼。附:我希望我說得很清楚。
如果我的理解正確,你真正需要做的是改變你的SQL查詢。 ''SELECT * FROM receiverz''將檢索表中的所有記錄,所以while循環將通過每條記錄,並且表中最後一個是被設置的。只要改變查詢'「SELECT * FROM receiverz其中num =?」'然後用[PreparedStatement的(http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)執行查詢。那麼只有一個結果是正確的。 – dnc253 2012-04-19 22:18:48