Announcement

Collapse
No announcement yet.

Datenbankzugriffe in VCL und Win-Form Programmen

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

  • Datenbankzugriffe in VCL und Win-Form Programmen

    Hallo,

    ich hätte folgende Fragen:

    Kann man in VCL Programmen mit ADO auf MS - SQL Datenbanken zugreifen (wie bei Delphi 7 z.Bsp. Ado-Connetion, Ado-Dataset ..) ohne eine ODBC Verbindung neu einzurichten ?

    Gibt es eine Möglichlkeit auch in VCL Programmen mit BdpDataAtapter zu arbeiten ?

    Kann man in Win-Form Programme auf Paradox-Tabellen zugreifen ?

    Gruß Georg

  • #2
    Hallo,

    >Kann man in VCL Programmen mit ADO auf MS - SQL Datenbanken zugreifen ...

    ja, denn die nativen ADO-Objekte <i>Connection</i>, <i>Command</i> und <i>Recordset</i> (etc.) stehen dank COM Interop auch in .NET zur Verfügung. Allerdings fehlen die VCL-Komponenten aus dbGo (ADO Express). Das folgende Beispiel demonstriert dies (dazu muss nur <b>ADODB</b> als Verzeichnis dem Projekt hinzugefügt und in die Uses-Auslistung aufgenommen werden). Aber nur in einem FCL-Programm (Windows Forms) steht der automatische Anbindungsweg an das DataSet zur Verfügung, so dass in VCL.NET kein automatisches Binden an die Controls möglich ist.
    <pre>
    <b>var</b>
    aCon : ADODB.Connection;
    aRS : ADODB.Recordset;
    vRows: TObject;
    aAdp : System.Data.OleDb.OleDbDataAdapter;
    <b>begin</b>
    aCon := ADODB.ConnectionClass.Create;
    aCon.Open(cCS,<font color="#9933CC">''</font>,<font color="#9933CC">''</font>, 0);
    <b>try</b>
    aRS := aCon.Execute(cSQL,vRows, 0);
    aAdp := System.Data.OleDb.OleDbDataAdapter.Create;
    aAdp.Fill(DataSet1, aRS, cTbl);
    DataGrid1.DataMember := cTbl;
    StatusBar1.Text := Integer(DataSet1.Tables[0].Rows.Count).ToString +
    <font color="#9933CC">' Datensätze.'</font>;
    <b>finally</b>
    aCon.Close;
    <b>end</b>;
    <b>end</b>;
    </pre>
    &gt;..auch in VCL Programmen mit BdpDataAtapter zu arbeiten?

    In der Standard-Installation ist derartiges nicht vorgesehen, wenn die BDP.NET-Komponenten <b>visuell</b> über den Objektinspektor konfiguriert werden sollen. Zwar gibt es technisch einen Weg, eine VCL-Wrapperkomponente zusammenzubauen, aber dies selbst zu tun, macht in meinen Augen zum jetzigen Zeitpunkt keinen Sinn. Im ersten Schritt wird eine neue Klasse von dieser Komponente abgeleitet, die zusätzlich einen Konstruktor mit der Signatur <i>constructor Create(aOwner: TComponent)</i> implementiert. Außerdem muss diese neue Klassen als Unterstützung einen von <b>TComponentHelper</b> abgeleiteten Class Helper erhalten. Wenn die Gerüchteküche richtig brodelt, soll bereits das erste Update Pack für Delphi 8 diesen Prozess vereinfachen.

    &gt;Kann man in Win-Form Programme auf Paradox-Tabellen zugreifen ?

    Ja - über den OLE DB Provider der Microsoft JET Engine. Dafür habe ich aber zur Zeit nur ein VB.NET-Beispiel am Lager. Dieses Beispiel lässt sich aber problemlos in Delphi 8 nachbauen, da alle Zutaten direkt aus dem .NET Framework stammen:
    <pre>
    Private Sub Button2_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button2.Click
    Dim sConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=C:\Programme\Gemeinsame Dateien\Borland Shared\Data" & _
    ";Extended Properties=Paradox 5.x;"
    Dim aCon As New OleDbConnection(sConStr)
    aCon.Open()
    Dim aCmd As New OleDbCommand("SELECT * FROM Country", aCon)
    Dim aAdp As New OleDbDataAdapter(aCmd)
    Dim aDS As New DataSet()
    aAdp.Fill(aDS, "Country")
    DataGrid1.DataSource = aDS.Tables(0).DefaultView()
    End Sub
    </pre&gt

    Comment


    • #3
      Hallo Andreas,<br>
      wo finde ich ADODB ??

      Comment


      • #4
        Hallo,

        in der <b>Projektverwaltung</b> muss dem Zweig <i>Referenzen</i> über den Dialog <i>Referenz hinzufügen</i> (Registerseite <i>.NET-Assemblierungen</i>) ein Verweis auf die <i>Primary Interop Assembly</i> ADODB hinzugefügt werden. Wenn auf dem Rechner die <i>Primary Interop Assembly</i> (PIA) von ADODB nicht installiert ist, muss man zur Registerseite <i>COM-Importe</i> wechseln, um dort den Eintrag <i>Microsoft ActiveX Data Objects 2.x</i> auszuwählen

        Comment

        Working...
        X