Avatar billede rajensen Nybegynder
03. april 2012 - 17:01 Der er 3 kommentarer og
1 løsning

Apche Derby - Java: Gemme et Array i Column ???

Hej Alle Jer på Eksperten.
Baggrund: Sidder og leger med Java og nu med en Apache Derby Database. Det er lykkes at stable en database på benene og for så vidt har jeg kontrol over den. Jeg kan skrive Strings og Integer til den, udlæse med mere. Så min Embedded Derby database fungerer.
Jeg har så en stribe heltal, hvis rækkefølge skal holdes og derfor har indtil videre holdt dem i en ArrayList. Dem vil jeg gerne gemme i min database i en kolonne. Så derfor:

Spørgsmålet kort: Kan jeg gemme Array's eller Arralist's i en kolonne og hvordan gøres det?

Jeg har læst mig frem til at Derby har en syntax INDEX og jeg troede at hvis man lave en kolonne om til INDEX, så kunne man gemme Arrays i den kolonne, men der måske noget der smuttet af sporet?
Jeg har prøvet frem og tilbage med:

public void insertIntoColumn(String name, int value){
        try{
            stmt = conn.createStatement();
stmt.executeUpdate("UPDATE " + tableName +" SET ARRAY = {1,2,3}");
<---eller denne--->
stmt.executeUpdate("UPDATE " + tableName +" SET ARRAY = " + value);

//hvor argumentet "value" er det Array der har heltallene.

stmt.close();
}cacth ....->

har også forsøgt med:

public void updateColumn(String coluName, int[] inStore){
        try{
            pstmt = conn.prepareStatement("UPDATE " + tableName + " SET " + coluName + " = " + inStore);
            pstmt.executeUpdate();

//hvor inStore er Array'et med heltallene.

Jeg har prøvet når jeg opretter databasen at give den CREATE TABLE myTable(ID INTEGER, ARRAYS INTEGER[]);
Så kaster den en SQLException på "[".
Så indtil videre er den kun lykkes at lave myTable(ID INTEGER, ARRAYS INTEGER);
Og derefter "CREATE INDEX arrINDEX ON " + tableName + "( ARRAYS)";
Da der ikke bliver kastet en SQLException, formoder jeg at INDEX virker på min kolonne "ARRAYS", men den vil ikke modtage noget som helst uagtet hvad jeg prøver! Ikke engang et INTEGER
Så jeg håber der er nogen der kan hjælpe mig på rette spor efter 2 aftener uden succes!
Avatar billede arne_v Ekspert
03. april 2012 - 18:10 #1
Jeg ved ikke om Derby har nogle specielle array features a la Oracle.

Men i traditionel database og SQL vil man lave en PreparedStatement og en loekke som itererer over ArrayList og laver en INSERT/UPDATE per vaerdi.

Hvis det hele bundtes i en transaction og/eller i en batch boer det performe fint.
Avatar billede rajensen Nybegynder
03. april 2012 - 20:27 #2
Hej Arne_V.

Jeg kan godt se hvor du vil hen.
Nu har fisket lidt rundt med forskellige forsøg og det lykkes ikke at få smidt et array ind på plads med prepareStatement og en for-løkke.
SÅ jeg vil nu forsøge en anden vej rundt om åen og bare oprette det antal kolonner der skal til at holde data'erne.

:-)
Avatar billede arne_v Ekspert
04. april 2012 - 04:02 #3
Normalt vil man gemme et array som flere raekker (en raekke per array element).
Avatar billede rajensen Nybegynder
04. april 2012 - 04:31 #4
Hej Arne_V.
Ja, det blev også løsningen.
Så kom jeg videre projektet og det er mere vigtigt end løsningen lige nu.
:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester