Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Datenbanken, Server, Betriebssysteme und sonstige Programmiersprachen > Datenbanken > SELECT INTO :host-variable mit PreparedStatements?
Antwort
 
Themen-Optionen
Alt 25.10.2004, 20:37   Nach oben    #1
Densi
Gast
 
Beiträge: n/a
Standard SELECT INTO :host-variable mit PreparedStatements?

Hallo,

ich möchte einen einfachen "SELECT COUNT(*)" mit einem PreparedStatement durchführen.
Den ermittelten Wert möchte ich natürlich auch speichern.

Also habe ich folgende Methode programmiert:
Java Code:
  1. public int selectCount();
  2. {
  3.    int value = 0;
  4.  
  5.    PreparedStatement count = connection.prepareStatement("SELECT COUNT(*) INTO :value FROM TABELLE");
  6.  
  7.    count.execute();
  8.  
  9.    return value;
  10. }

Darüber meckert JDBC aber
man darf wohl keine Host-Variable in PreparedStatements verwenden.
Man solle stattdessen mit "?" arbeiten.

Ja aber wie denn bitte?

So geht´s nämlich auch nicht:
Java Code:
  1. PreparedStatement count = connection.prepareStatement("SELECT COUNT(*) INTO ? FROM TABELLE");
  2.  
  3.    count.setString(1, ":value");

Kann doch nicht sein, dass ich für (definitiv nur) einen Datensatz mit einem ResultSet arbeiten muss, oder???

Danke und Gruß,
Densi.
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.10.2004, 05:34   Nach oben    #2
nove
Erfahrener Benutzer
 
Registriert seit: 16.11.2005
Beiträge: 243
Standard

also ich denke du hast da was falsch verstanden beschäftige dich mal in der API mit ResultSets und Connections

ein PreparedStatement sieht in etwa so aus und

SELECT

Java Code:
  1. pstm=deineconnection.prepareStatement("SELECT * FROM tabelle WHERE irgendwas=?");
  2. pstm.setString(1,"irgendeinString");
  3. ResultSet rs = pstm.execute;

INSERT
Java Code:
  1. pstm=deineconnection.prepareStatement("INSERT INTO tabelle(deine spalten) VALUES(?);
  2. pstm.setString(1, "irgendeinString");
  3. pstm.execute;

Natürlich kannst du alle Typen einfügen die Dein DB-System zulässt.

Weitere Values einfach durch komma trennen
Java Code:
  1. pstm=deineconnection.prepareStatement("INSERT INTO tabelle(deine spalten) VALUES(?,?,?);
  2. pstm.setString(1, "irgendeinString");
  3. pstm.setString(2, "irgendeinString");
  4. pstm.setString(3, "irgendeinString");
  5. pstm.execute;

usw.

nichtsdestotrotz solltest du dir doch mal grundsätzlichen reinziehen:

http://java.sun.com/docs/books/tutor...ics/index.html

Greetings

NOVE
nove ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.10.2004, 05:43   Nach oben    #3
nove
Erfahrener Benutzer
 
Registriert seit: 16.11.2005
Beiträge: 243
Standard

Noch was allgemeines:

Es ist keinerlei Quällerei oder Gehässigkeit dahinter wenn wir hier immer wieder auf die APIs oder Tutorials verweisen. Da Anfänger oft den Fehler machen (ich schließe mich hierbei nicht aus) sich auf Sachen stürzen die auch den Fortgeschrittenen zum Nachdenken bringen. Learning by Doing ist ja OK aber hierfür gibts die Tutorials von Sun. Auch sollte man/frau sich erstmal über den Fakt im klaren sein was Objektorientiert heißt.
Man/Frau kann nunmal schlecht eine Sache erklären wenn ein gewisses Grundwissen fehlt.

Das ist jetzt nicht gegen Dich oder Deinen Post gerichtet. Es gibt keine Dummen Fragen. Nur hilft es ungemein wenn wir für gewisse Themen ein Grundwissen voraussetzen können.

Greetings

NOVE
nove ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.10.2004, 23:57   Nach oben    #4
Densi
Gast
 
Beiträge: n/a
Standard ne ne ne

Hi,

ne ne ne

Ich hab schob verstanden, wie man mit PreparedStatements und RS umgeht.
Ich möchte aber eine SQL-Anweisung SELECT SPALTE INTO :hostvar WHERE SPALTE = xyz ausführen. Und zwar mit einem PreparedStatement. Von mir aus auch mit einem "normalen" Statement. Aber eben dynamisch und nicht statisch (SQLJ).

Das scheint JDBC aber nicht vorzusehen, was ich doof finde.

Was für mich heißt: wenn ich dynamisch bleinen möchte, muss ich ein RS (also einen Cursor) bilden, obwohl ich weiß, dass eh nur *ein* Ergebnissatz zurückkommt...

Who cares...

Gruß,
Densi.
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.10.2004, 06:55   Nach oben    #5
nove
Erfahrener Benutzer
 
Registriert seit: 16.11.2005
Beiträge: 243
Standard

also ich denke es hat nichts mit JDBC zu tun. Es kommt auch auf die Datenbank an mit der du arbeitest.
Kann es sein, daß du einen JOIN machen willst? Also ehrlich gesagt macht für mich im Moment der Befehl SELECT irgendwas INTO irgendwas keinen Sinn.

Mit was für einem DB-System arbeitest du denn?
nove ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.10.2004, 11:15   Nach oben    #6
Densi
Gast
 
Beiträge: n/a
Standard doch doch

Hi,

select-into ist ein Standard-SQL-Befehl für embedded SQL. Anscheinend aber nur für statisches...

In C sieht das z.B. so aus:
Java Code:
  1. int zahl;
  2.  
  3. EXEC SQL
  4.    SELECT NR INTO :zahl WHERE NAME = XYZ
  5. ;

Gruß,
Densi.
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Your most abnormal Query Guradia Datenbanken 21 19.04.2006 00:15
PRoblem mit Cookie bei PHPbb-Board Julied64 PHP-Programmierung 2 12.12.2005 15:41


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:18 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44