Avatar billede lubker Nybegynder
23. marts 2005 - 20:08 Der er 8 kommentarer og
1 løsning

Sql update og insert

Hej eksperter.
Jeg er stødt ind i et problem med mysql.
Jeg bruger følgende funktion til at forbinde til mysql:

procedure OpretForbindelse();
begin
  SQLConnection:=TSQLConnection.Create(nil);
  SQLConnection.LoginPrompt:=false;
  SQLConnection.ConnectionName:='MySQL';
  SQLConnection.DriverName:='MYSQL';
  SQLConnection.GetDriverFunc:='getSQLDriverMYSQL';
  SQLConnection.LibraryName:='dbexpmysql.dll';
  SQLConnection.VendorLib:='LIBMYSQL.dll';
  SQLConnection.Params.Values['Hostname']:= 'minip';
  SQLConnection.Params.Values['Database']:= 'mindatabase';
  SQLConnection.Params.Values['User_Name']:= 'brugernavn';
  SQLConnection.Params.Values['Password']:='password';
  SQLConnection.AutoClone:=false;

  SQLQuery:=TSQLQuery.Create(nil);
  SQLQuery.SQLConnection:=SQLConnection;

  SQLConnection.Open;

end;

Derefter kan jeg hente med følgende kode:
OpretForbindelse();
SQLQuery.SQL.Text:='SELECT * FROM produkter WHERE id = 1';
SQLQuery.Open;
Edit2.Text:=SQLQuery.FieldByName('status').AsString;


Det virker fint nok, men følgende update kan jeg ikke få til at virke, og det samme med insert... Det vil bare ikke. Den problematiske kode ser således ud:

OpretForbindelse();
SQLQuery.SQL.Text:='UPDATE produkter SET produkt='+edit1.text+' WHERE id = 1';
SQLQuery.Open;
Avatar billede alister_crowley Nybegynder
23. marts 2005 - 20:10 #1
du mangler at omkanse din textværdi med '' eller lign, hvis det er tekst, og ikke tal som er i edit1.text

Måske sådan her:

SQLQuery.SQL.Text:="UPDATE produkter SET produkt='"+edit1.text+"' WHERE id = 1'";
Avatar billede alister_crowley Nybegynder
23. marts 2005 - 20:11 #2
ups, lille tastefejl

SQLQuery.SQL.Text:="UPDATE produkter SET produkt='"+edit1.text+"' WHERE id = 1";

Der var et ' formeget med i enden. (Dette er ikke testet)
Avatar billede lubker Nybegynder
23. marts 2005 - 20:12 #3
Så melder den "curser not returned for query"
Avatar billede alister_crowley Nybegynder
23. marts 2005 - 20:19 #4
uhh, så meget har jeg alligevel ikke arbejdet med Delphi, viste bare at i genneal SQL skulle der ' ' udenom tekst-værdier, det er kun tal som er undtaget.
Avatar billede lubker Nybegynder
23. marts 2005 - 20:20 #5
Ja det har du fuldstændig ret i....
Ikke anderledes end i php.
Avatar billede snowball Novice
23. marts 2005 - 20:37 #6
Prøv med nedenstående:

SQLQuery.SQL.Text:='UPDATE produkter SET produkt='''+edit1.text+''' WHERE id = 1';
Avatar billede lubker Nybegynder
23. marts 2005 - 20:40 #7
Samme resultat.
curser not returned for query
Avatar billede stoney Nybegynder
23. marts 2005 - 22:30 #8
i stedet for SQLQuery.Open skal det være SQLQuery.ExecSQL

open bruges KUN ved select, ved delete,update og insert SKAL bruges ExecSQL

Stoney
Avatar billede lubker Nybegynder
23. marts 2005 - 22:57 #9
Kanon.
Så kom der endelig resultat...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB