AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQL query

Ein Thema von value is NULL · begonnen am 27. Sep 2010 · letzter Beitrag vom 28. Sep 2010
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
672 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: SQL query

  Alt 27. Sep 2010, 13:11
du kannst dir auch einfach eine leere datei erstellen, die du "Test.udl" nennst.
Dann einen Doppelklick darauf, und der Editor geht auf, in dem du ganz bequem alles einstellen kannst. Du kannst sogar diese UDL-Datei in dem Connectionstring angeben und so die Verbindung über die Datei nutzen (anstatt hard-coded)...
...und auf diese Weise herausfinden, dass der provider SQLOLEDB.1 heißt
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
value is NULL

Registriert seit: 10. Sep 2010
249 Beiträge
 
#12

AW: SQL query

  Alt 27. Sep 2010, 13:27
Also, ich bin nun zu foldendem Teilerfolg gekommen mit folgendem Code:

Delphi-Quellcode:
var
  Conn : TADOConnection;
  Query: TADOQuery;
  provider : string;

begin
try
  CoInitialize(nil);
  Conn := TADOConnection.Create(nil);
  Conn.ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info = False;Initial Catalog=test;Data Source=localhost';
  Conn.Connected := true;

  Query := TADOQuery.Create(nil);
  Query.Connection := Conn;
  Writeln(Query.SQL.Add('select count(*) from tbuser'));
  Query.Active := true;

except
  on e : exception do begin
    writeln(e.message);
    halt(1);
  end;
end;

end.
Wenn ich diesen Query abschieße: Writeln(Query.SQL.Add('Select count(*) from tbuser')); bekomme ich 0 zurück ich habe jedoch 17 einträge? ist das eventuell der Fehlercode?
wenn ja wie bekomme ich den Output des Query's?

Vielen Dank im Voraus!

PS: für die MSDE wird SQLOLEDB.1 verwendet

LG
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#13

AW: SQL query

  Alt 27. Sep 2010, 13:42
Du setzt ja das active := true; auch zu spät.
Gruß
Hansa
  Mit Zitat antworten Zitat
value is NULL

Registriert seit: 10. Sep 2010
249 Beiträge
 
#14

AW: SQL query

  Alt 27. Sep 2010, 13:47
und wo gehört das active hin?
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#15

AW: SQL query

  Alt 27. Sep 2010, 14:01
ich würde es ungefähr so machen

Delphi-Quellcode:
query.close;
query.sql.text:='select count(*) as Meinwert from mytable';
query.open;
while not query.eof do begin
  meinWert:=query.fieldbyname('Meinwert').asinteger;
  query.next;
end;
query.close;
Ist natürlich meistens Blödsin mehrere Werte (wenn vorhanden) in eine Variable auszulesen.
Ist aber als Grundstruktur ganz brauchbar.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
value is NULL

Registriert seit: 10. Sep 2010
249 Beiträge
 
#16

AW: SQL query

  Alt 27. Sep 2010, 14:18
das prinzip verstehe ich nicht

wieso sieht der query so aus:
query.sql.text:='select count(*) as Meinwert from mytable'; bzw. warum dieses zeile?
meinWert:=query.fieldbyname('Meinwert').asinteger; ich will ja nur einen Wert oder ein count absetzen wie zB:
select count(*) from tbuser oder
select username from tbuser

LG
  Mit Zitat antworten Zitat
GHorn

Registriert seit: 24. Mär 2009
Ort: NRW
124 Beiträge
 
#17

AW: SQL query

  Alt 27. Sep 2010, 14:50
Wie Hansa schon schrieb:

Du setzt ja das active := true; auch zu spät.
Du musst doch erst das Ergebnis einlesen bevor Du es mit WritLn() ausgeben kannst. Der active-Befehl schickt Dein
select-statement auf die Reise.

So sollte es gehen:


Delphi-Quellcode:
query.sql.text:='select count(*) as Meinwert from mytable';
query.Active := true;
WriteLn(query.FieldByName('Meinwert').AsString);
  Mit Zitat antworten Zitat
value is NULL

Registriert seit: 10. Sep 2010
249 Beiträge
 
#18

AW: SQL query

  Alt 27. Sep 2010, 14:58
hm alles klar so funktionierst

Delphi-Quellcode:
var
  Conn : TADOConnection;
  Query: TADOQuery;
  wert : string;

begin
try
  CoInitialize(nil);
  Conn := TADOConnection.Create(nil);
  Conn.ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info = False;Initial Catalog=test;Data Source=localhost';
  Conn.Connected := true;

  Query := TADOQuery.Create(nil);
  Query.Connection := Conn;
  query.SQL.Text := 'select count(*) as wert from tbuser';
  query.Active := True;
  Writeln(query.FieldbyName('wert').asstring);

except
  on e : exception do begin
    writeln(e.message);
    halt(1);
  end;
end;

end.
aber das mit dem query.SQL.Text := 'select count(*) as wert from tbcall'; ist für mich irgendwie unlogisch
dh. ich setze praktisch in meinem query die variable?

LG und DANKE
  Mit Zitat antworten Zitat
value is NULL

Registriert seit: 10. Sep 2010
249 Beiträge
 
#19

AW: SQL query

  Alt 27. Sep 2010, 15:27
Hab jetzt versucht mir das ganze zu vereinfachen und eine unit zu schreiben:

Delphi-Quellcode:
unit sqlst;

interface

uses
  SysUtils,db,adodb,activex;

function connect(): string;
function query(query : string) : string;
function close(): string;

var
  conn : TADOConnection;
  query1 :TADOQuery;

IMPLEMENTATION

function connect(): string;
begin
try
  CoInitialize(nil);
  Conn := TADOConnection.Create(nil);
  Conn.ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info = False;Initial Catalog=test;Data Source=localhost';
  Conn.Connected := true;
except
  on e : exception do begin
    writeln(e.message);
    halt(1);
  end;
end;
end;

function query(query : string) : string;
begin
try
  query1 := TADOQuery.Create(nil);
  query1.Connection := Conn;
  query1.SQL.Text := query;
  query1.Active := True;
except
  on e : exception do begin
    writeln(e.message);
    halt(1);
  end;
end;
end;

function close(): string;
begin
try
  query1.SQL.Clear;
  query1.close;
except
  on e : exception do begin
    writeln(e.message);
    halt(1);
  end;
end;
end;


end.
ABBEERR ich habe ja nun das problem, das ich an dieser stelle:
Delphi-Quellcode:
function query(query : string) : string;
begin
try
  query1 := TADOQuery.Create(nil);
  query1.Connection := Conn;
  query1.SQL.Text := query;
  query1.Active := True;
except
  on e : exception do begin
    writeln(e.message);
    halt(1);
  end;
end;
end;
und zwar genau an dieser Stelle  query1.SQL.Text := query; ich muss hier ja auch diesen wert überegeben... wie könnte ich das lösen?

mir fehlt praktisch diese zeile:

 query.FieldbyName('wert').asstring LG und DANKE

Geändert von value is NULL (27. Sep 2010 um 15:30 Uhr) Grund: update
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#20

AW: SQL query

  Alt 27. Sep 2010, 16:05
Hi,

Du solltest den Parameter der Funktion nicht genauso wie die Funktion selber nennen !

Delphi-Quellcode:
function query(sQuerySQL : string) : string;
Var oTmpQry : TAdoQuery;
begin
oTmpQry := TADOQuery.Create(nil);
try
  try
    oTmpQry.Connection := Conn;
    oTmpQry.SQL.Text := sQuerySQL;
    oTmpQry.Active := True;
    result := oTmpQry.FieldbyName('wert').asstring
  except
    on e : exception do begin
      writeln(e.message);
      halt(1);
    end;
  end;
Finally
  oTmpQry.free;
end;
end;
Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz