2013-07-09 37 views
8

Bir veritabanı sorgusu hazırladım ve Account nesnelerini ResultSet'da depolarım. İşte kod:Resultset'in getObject() yöntemi - nasıl düzgün şekilde kullanılır?

Bu kod 3 nesne döndürür ve bunları rs'ye kaydeder. Sonra bu nesneleri ResultSet içine almak ve kodda gördüğünüz gibi bir ArrayList içine koymak istiyorum. Ancak belirtilen satırda ; beklenen bir hata veriyor. getObject yöntemini nasıl düzgün kullanabilirim?

+0

Neden getObject': (('ve')) 'nin yanında çift parantez var? – rgettman

+0

Size bir * sözdizimi hatası * verdiğini söylüyor. Örneğin, çok fazla parantez ve ait olmayan bir Tür gibi. –

+0

peki, parantezler hakkında üzgünüm ben onları tamir – yrazlik

cevap

3

ResultSet.getObject (ve diğer getXxx yöntemleri) ResultSet geçerli satırdan veri almak ve endeks Sen 0 değeri ile i değişken belirledik 1'de başlar olacaktır.

Sadece tek bir param ihtiyacı getObject Ayrıca, bu

int i=0; 

için

int i=1; 

, değiştirmek, ancak yanlış ikisini gönderiyoruz:

Account account= rs.getObject(i, Account); 

Muhtemelen çalışıyorlardı ResultSet#getObject(int, Class)'u kullanın (Java 7'den edinilebilir), ancak Account sınıfınızın, bir veritabanı sütunundan bu nesnenin bir örneğine dönüştürülmesi için sihirli olarak olamaz.

Önce JDBC trial numaralı telefonu incelemek daha iyi olurdu, ardından sorununuzu çözmek için tekrar deneyin.

İşte incelemek için diğer bir iyi kaynağıdır: Using Customized Type Mappings

+0

denedim ve aynı zamanda erroneus satırını Account account = rs.getObject (i, Account.class) olarak değiştirdim; şimdi hiçbir sözdizimi hatası yok ama null döndürür, ben hata ayıklayacağım ve soruyu düzenleyeceğim, teşekkürler – yrazlik

+1

@iceface cevabımı güncellemeyi kontrol et. –

+0

bu mantıklı, bunu yapmanın bir yolunu buldum. Dize s = rs yaptığımızda.getString (0); Bu, herhangi bir hata verir bu yüzden Hesap nesnesi için aynı şeyi yaparsanız, bu iyi olurdu ama – yrazlik

1

Amacımız: bd bizim nesneyi almak nasıl

import java.io.Serializable; 
... 
class Account implements Serializable{ 
    public String data; 
} 

:

: Bizim nesneyi nasıl kaydedilir

while (rs.next()) { 
     Object accountJustObject = rs.getObject(i); 
     Account account = (Account)accountJustObject; 
     accounts.add(account); 
     i++; 
} 

public void InsertAccount(int id, Account newaccount){ 
reparedStatement insertNew = conn.prepareStatement(
    "INSERT INTO root(id,account) VALUES (?,?)"; 
    insertNew.setInt(1, id);    //INT field type 
    insertNew.setObject(2, newaccount); //OTHER field type 
    insertNew.executeUpdate(); 
) 
} 

H2 veritabanı altında test edilmiştir.

İlgili konular