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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.658 Beiträge
 
Delphi 12 Athens
 
#1

AW: SQL query

  Alt 27. Sep 2010, 12:47
Mach Dir doch schnell ein Testprojekt, packe dort eine TADOConnection aufs Form und lass Dir den ConnectionString generieren. Evtl. funktioniert der "Microsoft OLE DB Driver for SQL Server", zumindest bei SQLExpress 2008 bekomme ich damit eine Verbindung.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
schlecki

Registriert seit: 11. Apr 2005
Ort: Darmstadt
148 Beiträge
 
Delphi XE2 Enterprise
 
#2

AW: SQL query

  Alt 27. Sep 2010, 12:54
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)...
  Mit Zitat antworten Zitat
value is NULL

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

AW: SQL query

  Alt 27. Sep 2010, 13:10
Hi Schlecki habs jetzt im endeffekt eh so zum testen:

Delphi-Quellcode:
begin
opt.addoption('provider','p','provider',false,true,'','Set provider path');
  try
    opt.parse;
    if paramcount = 0 then
      raise exception.Create('Parameter missing!');
   except
      on e : exception do begin
        writeln(e.message);
        writeln(opt.usage);
        halt(1);
      end;
   end;

provider := opt.getoptasstr('provider');


try
  CoInitialize(nil);
  Conn := TADOConnection.Create(nil);
  Conn.ConnectionString := 'Provider='+provider+';Password=;Persist Security Info=True;User ID=sa;Initial Catalog=EnvironmentSafe;Data Source=voxctv3';
  Conn.Connected := true;

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

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

end.
ich versuche es jetzt mal wie DeddyH gemeint hat...
  Mit Zitat antworten Zitat
value is NULL

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

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
 
#5

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
 
#6

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
 
#7

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
GHorn

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

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
 
#9

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
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
684 Beiträge
 
Delphi 12 Athens
 
#10

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
Antwort Antwort


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:58 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