Avatar billede fredand Forsker
28. november 2012 - 20:19 Der er 6 kommentarer og
1 løsning

How come this sql exected from Java gives a empty resultset?

Hello guys!

I got a small Java-app thats works like below.

ResultSet resultSet = statement.executeQuery( "select * from BETALD_ARTIKEL where FK_BETALNINGID = 1
");
           
//Loop through result
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
int columnCount = resultSetMetaData.getColumnCount();
while (resultSet.next())

... how ever I do not find any rows.

My test table looks like this with the data:

create table betald_artikel (
id int not null,
fk_betalningid int not null,
fk_ansokanid int,
CONSTRAINT betald_artikel_betalning FOREIGN KEY (fk_betalningid) REFERENCES betalning (id),
CONSTRAINT betald_artikel_ansokan FOREIGN KEY (fk_ansokanid) REFERENCES ansokan (id),
typ char(16),
status char(16)
);

insert into betald_artikel values(1, 1, 1, 'typaaaaaaaaaaaaa', 'EJ_HANDLAGD');
insert into betald_artikel (id, fk_betalningid, typ, status) values(2, 1, 'typbbbbbbbbbbbbb', 'HANDLAGD');


...and from sqlplus it the query works fine!

Do you see any misstake I do?

Best regards
Fredrik
Avatar billede arne_v Ekspert
28. november 2012 - 20:31 #1
You connect to the right database and the inserts are committed?
Avatar billede fredand Forsker
28. november 2012 - 21:01 #2
Hello Arne!

Yes I do, Strangely I can retrive rows from this other table;
create table betalning (
id int not null,
referens char(16),
station char(16),
PRIMARY KEY(id)
);

insert into betalning values(1, 'referens11111111', 'station1');
insert into betalning values(2, 'referens22222222', 'station2');
insert into betalning values(3, 'referens33333333', 'station3');

with the sql like:
select * from BETALNING where ID = 1

It works the same with preparedStatments.

Very strange!

Best regards
Fredrik
Avatar billede claes57 Ekspert
28. november 2012 - 21:08 #3
jeg bliver bare pisset lidt af.
Hvorfor stiller du spg i et dansk forum på engelsk?
Hborfor bruder du semi-danske ord, når du ikke kan stave til dem? (bliv dog hellere på engelsk)
Mht fejl - typaaaaaaaaaaaaa er der et a for meget? Brug dog et enkelt navn.

BETALD = Betalt
BETALNING = Betaling

Jeg skal bruge (og det gider jeg ikke) lang tid på at gætte de enkelt ord.  Hvad er der galt med simpelt dansk - hver gang jeg møder et forkert-stavet ord, så skal jeg tilbage i teksten for at se, om det også var stavet lige så forkert tidligere.
Kan du ikke stave til "Betalt" så skriv fx "x" og så fremdeles - åbenbart staves der ok på engelsk.
Avatar billede arne_v Ekspert
28. november 2012 - 21:12 #4
han er svensker!
Avatar billede fredand Forsker
29. november 2012 - 08:41 #5
Hola amigos!

Sorry for my bad english and my even worse danish.
How ever I guess my english is better then my danish.
Yes it is correct I'm swedish.
Eksperetn.dk is in my opionion the best forum on the net.
Hope you guys bare with me!

How ever Arne, you were right!
I have missed to commit.

I pasted into sqlplus create table ...for betalning
then some inserts.
Then I pasted the create table betald_artikel.
then some inserts.

In sqlpluds I could retrive all rows from both tables.
From Java, just from betalning.

After your answer I realized that there must be a commit after a create table, I guess.
Perhaps that is obvious?

Please give a svar!
Best regards!
Mange tak!
/Fredrik
Avatar billede arne_v Ekspert
29. november 2012 - 15:10 #6
http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_1001.htm#sthref320

"Oracle Database implicitly commits the current transaction before and after every DDL statement."
Avatar billede arne_v Ekspert
29. november 2012 - 15:10 #7
svar
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
Kurser inden for grundlæggende programmering

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