Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Prism Webservice unter ASP.NET und Datenbankzugriff auf MYSQL (https://www.delphipraxis.net/58573-webservice-unter-asp-net-und-datenbankzugriff-auf-mysql.html)

Highway 9. Dez 2005 00:16


Webservice unter ASP.NET und Datenbankzugriff auf MYSQL
 
@all

Hallo,

kann mir jemand einen Tipp geben wie man unter .net (ASP.NET Webservice) auf eine bestehende ODBC-Datenbankverbindung zu einer MYSQL Datenbank zugreifen kann.

Grüße aus dem Rheinland,

Highway

r_kerber 9. Dez 2005 04:47

Re: Webservice unter ASP.NET und Datenbankzugriff auf MYSQL
 
Moin moin,

DU kannst Dir bei Microsoft kostenlos einen ODBC.Net-Provider herunterladen (ODBC .NET-Datenprovider). Und die erforderlichen ConnectionStrings findest Du u.a. hier: MySQL Reference Manual - 23 MySQL Connectors

Highway 9. Dez 2005 11:09

Re: Webservice unter ASP.NET und Datenbankzugriff auf MYSQL
 
@r_kerber

Hallo,

danke für deine Hilfe, aber ich komme immer noch nicht klar.

Ich habe denn .net-Provider herunter geladen und installiert. Ich finde diesen aber nicht in der Entwicklungsumgebung wieder.

In einer VCL-Anwendung habe ich immer nur eine ADO-Connection auf die entsprechenden MySQL-ODBC Verbindung verbunden.

Beispiel:
Delphi-Quellcode:
Function xyz: TDataRecord;
var
  AdoConnection: TAdoConnection;
  Query: TAdoQuery;
begin
  AdoConnection := TAdoConnection.Create(Self);
  AdoQuery := TAdoQuery.Create(Self);
  try
    AdoConnection.ConnectString := '......';
    AdoConnection.Open;
    AdoQuery.Sql.Text := 'Select * from table';
    AdoQuery.ExecSql;
    Result.xyz := AdoQuery.FieldByName('....'). AsString;
  finally
    AdoQuery.Free;
    AdoConnection.Free;
  end;
end;
Über den ConnectString wird über den eingerichteten ODBC-Treiber (Original von MySQL) auf die Datenbank zugegriffen.
Das funktioniert bei VCL-Anwendungen prima.

Wie realisiert man eine solche Verbindung unter .net?

Muss ich in der Entwicklungsumgebung noch etwas importieren/installieren damit der Provider erkannt wird?

Ich bin noch nicht so vertraut mit der Delphi 2005 Entwicklungsumgebung. Habe bisher nur Delphi 7 verwendet, damit ist jede Menge Neues auf mich zugekommen.

Grüße,

Guido

r_kerber 9. Dez 2005 11:17

Re: Webservice unter ASP.NET und Datenbankzugriff auf MYSQL
 
Zitat:

Zitat von Highway
Ich habe denn .net-Provider herunter geladen und installiert. Ich finde diesen aber nicht in der Entwicklungsumgebung wieder.

Das mußt Du manuell machen. Es gibt in der IDE einen entsprechenden Menüpunkt (Komponenten - Installierte .Net-Komponenten). Und wie man mit .Net-Providern auf Datenbanken zugreift hat Dr. Bob im BDN für den C#-Builder beschrieben: Using ADO.NET with C#Builder Personal by Bob Swart . So läuft das auch mit Delphi.Net und ODBC.Net

Bernhard Geyer 9. Dez 2005 12:10

Re: Webservice unter ASP.NET und Datenbankzugriff auf MYSQL
 
Ich würde einen nativen MySQL ADO.NET-Treiber verwenden und ODBC und MyODBC außen vor lassen. Einen professionalen Treiber gibt es bei Core Labs oder für Nicht-Kommerzielle Entwicklung bei MySQL direkt.

Elvis 9. Dez 2005 12:48

Re: Webservice unter ASP.NET und Datenbankzugriff auf MYSQL
 
Wie geht das?
Sollte überall gleich sein...
Diese Interfaces sind es was ein paar Klassen zu einem ADO.Net Provider machen, nutzt du nur die hast du auch in .Net 1.1 einen Hauch von DB-unabhängigkeit:
Code:
using(IDbConnection connection = new DeineConenctionClass("connectionstring"))
using(IDbCommand command = connection.CreateCommand())
{
  command.CommandText = "SELECT...WHERE X = :Y";

  IDataParameter parameter = command.CreateParameter();
  command.Parameters.Add(parameter);
  parameter.PrameterName = "Y";
   
  using(IdataReader reader = command.ExecuteReader())
  {
    while (reader.Read())
    {
       ...
    }
  }
}
Das hier...
Code:
using(IDbCommand command = connection.CreateCommand())

}
Wäre in Delphi:
Delphi-Quellcode:
var
  command : IDbCommand;
begin
  command := connection.CreateCommand()
  try
  finally
    Dispose();
  end;
end;
Nie das Dispose() vergessen! Wenn deine Komponenten Fnalizer besitzen, hast du zwar kein MemLeak, aber Finalizer in einem WebService sind alles andere als witzig. Haben sie keinen, hättest du ein MemLeak! :shock:

Highway 9. Dez 2005 17:41

Re: Webservice unter ASP.NET und Datenbankzugriff auf MYSQL
 
@all

Vielen Dank für die wohlgemeinte Hilfe!

Hat alles nicht zu Erfolg geführt, aber ich habe eine alternative Lösung die ich nicht vorenthalten möchte.

Delphi-Quellcode:
function TWebService1.GetPilot(Id: Integer):WideString;
var
  Pilot: WideString;
  I: Integer;
begin
  OdbcConnection2.ConnectionString := ConnectString;
  OdbcConnection2.Open;
  OdbcDataAdapter1.SelectCommand.Connection := OdbcConnection2;
  OdbcDataAdapter1.SelectCommand.CommandText := 'select * from web94db1.flight_log';
  OdbcDataAdapter1.Fill(DataSet1,'flight_log');
  Pilot := '';
  For I := 0 to DataSet1.Tables.Item['flight_log'].Rows.Count -1 do
  begin
    Pilot := Pilot + DataSet1.Tables.Item['flight_log'].Rows.Item[I].Item['Pilot'].ToString + #13;
  end;
  Result := Pilot;
end;
Die Routine ist in eine ASP.NET Webservice Application eingebettet und liefert auch die entsprechenden Ergebnisse.

Etwas verwundert bin ich über das komplexe Abfrage Statement.

Zum nachprüfen:
Der Service läuft zur Zeit unter http://www.flightlogonline.wjk.de/cg...bservice1.asmx

Die passend WSDL-Definition gibt's unter:
http://www.flightlogonline.wjk.de/cg...ice1.asmx?wsdl

Nochmals Dank und Grüße,

Highway


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz