Announcement

Collapse
No announcement yet.

Hilfe für einen Neuling

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hilfe für einen Neuling

    Hallo zusammen,

    ich hoffe, dass mir hier jemand helfen kann.
    Falls dies hier falsch ist, bin ich auch dankbar für, wenn es ins richtige Unterforum verschoben wird.

    Also ich habe mir mit Oracle XE eine Datenbank erstellt und möchte jetzt auf diese mit Hilfe von Visual Studio mit VB zugreifen.
    Ich habe dies auch einigermaßen hinbekommen.

    Allerdings habe ich jetzt das Problem, wie ich einen Autowert in einer Tabelle automatisch setzen kann.
    Ich habe mir dazu unter Oracle eine Sequence und einen Trigger erstellt mit denen dies auch unter Oracle funktioniert.

    Meine Frage ist nun, wie muss mein Quellcode in VB aussehen um auf meine Datenbank zuzugreifen und dass die ID(Autowert) hochgezählt wird?


    Hier ist meine Testdatenbank:

    Tabelle:
    [highlight=sql]CREATE TABLE "TEST_AUTOWERT"
    ( "ID" NUMBER NOT NULL ENABLE,
    "TESTDATA" VARCHAR2(25) NOT NULL ENABLE
    )
    /[/highlight]

    Trigger:
    [highlight=sql]CREATE OR REPLACE TRIGGER "TEST_TRIGGER"
    before insert on TEST_AUTOWERT
    for each row
    begin
    select test_seq.nextval into :new.id from dual;
    end;
    /
    ALTER TRIGGER "TEST_TRIGGER" ENABLE
    /[/highlight]

    Sequence:
    [highlight=sql]CREATE SEQUENCE "TEST_SEQ" MINVALUE 1 MAXVALUE 999999 INCREMENT BY 1 START
    /[/highlight]


    Hoffentlich kann mir wer helfen!


    Gruß Frank
    Zuletzt editiert von Jürgen Thomas; 22.02.2010, 19:08. Reason: [highlight=sql] eingefügt, künftig selbst machen!

  • #2
    Hier hat auch jemand - der keine aussagekräftige Überschrift entwerfen kann - das gleiche Problem

    http://entwickler-forum.de/showthread.php?t=60378
    Christian

    Comment


    • #3
      Abrufen von Identitäts- oder AutoWert-Werten (ADO.NET)

      Ist zwar für SQLServer gedacht da du aber dessen Autowerte nachbastelst ist die Problembeschreibung wahrscheinlich dieselbe. Insbesondere der Absatz 'Zusammenführen neuer Identitätswerte' ist relevant (Und nein ich kenne das Oracle Äquivalent zu SCOPE_IDENTITY() nicht).

      P.S. Wieso bastelst du Autowerte nach und machst es nicht gleich so wie von Oracle vorgesehen? Also zuerst Sequenznummer holen und dann Insert mit dieser Nummer vornehmen?


      Edit: Das Äquivalent zu SCOPE_IDENTITY() wäre wohl TEST_SEQ.CURRVAL

      Comment


      • #4
        Hallo,

        das Unterforum ist korrekt: ADO.NET behandelt Datenbankzugriffe unter .NET (egal ob mit C# oder VB.NET oder sonstwas). Aber der Rest...

        1. Gib dem Thema eine Überschrift mit vernünftigem Inhalt; gehe dazu auf den ersten Beitrag mit "Editieren". (Ich werde deine neue Überschrift dann übernehmen.)
        2. Ich werde den SQL-Code formatieren. Beim nächsten Mal machst du das bitte sofort selbst.
        Beim nächsten Mal, wo du das nicht beachtest, werde ich das Thema sofort schließen.

        Zur Sache: Wie würdest du einen Datensatz mit SQL in der Datenbank speichern? Versuche zunächst diese Teillösung.

        Dann schau dir an, wie der DB-Zugriff unter .NET abläuft. Als Einführung siehe dazu OpenBook VB Kap.23 ff. Die dort verwendeten Sql-Klassen musst du durch deine Oracle-Klassen ersetzen. Falls du noch nicht weißt, wie du den Zugriff auf die Datenbank bekommst, dann schau zunächst unter connectionstrings nach, mit welchem String und welchem DbProvider das möglich ist. Hinweis: Nimm nicht Odbc oder Oledb oder MS-Oracle, sondern einen speziellen Oracle-Provider.

        Jürgen

        Comment

        Working...
        X