Avatar billede ahlforn Nybegynder
11. august 2001 - 11:47 Der er 10 kommentarer og
1 løsning

INSERT INTO i SQL

Jeg har siddet og rodet med lidt SQL i Delphi, og jeg er stødt på et problem. Problemet består i at når jeg vil lægge noget ind i databasen (på en Microsoft SQL Server 7.0), får jeg at vide at de data jeg prøver at lægge ind, ikke er tilladte. Jeg benytter et TQuery, og koden jeg bruger ser sådan ud:

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(\'INSERT INTO filarkiv (filnavn, fil_sti) VALUES(\"\' + filename + \'\",\"\' + filepath + \'\")\');
Quary1.SQL.ExecSQL;

Variablerne filename og filepath er strings. Og jeg bruger Delphi 6.
Avatar billede erikjacobsen Ekspert
11. august 2001 - 11:49 #1
kender ikke mssql7, men må man bruge dobbelt stoffer ?

Query1.SQL.Add(\'INSERT INTO filarkiv (filnavn, fil_sti) VALUES(\'\'\' + filename + \'\'\',\'\'\' + filepath + \'\'\')\');
Avatar billede ahlforn Nybegynder
11. august 2001 - 12:07 #2
Ja, så vidt jeg ved må man bruge dem i stedet for \'. Man bruger også \" i ASP, og det virker jo fint. Men koden virker heller ikke uden dem. Jeg har prøvet alle de muligheder jeg kan komme i tanke om.
Avatar billede erikjacobsen Ekspert
11. august 2001 - 12:10 #3
hvad præcis  skriver den til dig?
Avatar billede ahlforn Nybegynder
11. august 2001 - 13:17 #4
Den skriver præcis følgende:

Project prFileSearch.exe raised exeception class EDBEngineError with message \'General SQL error.
[Microsoft][ODBC SQL Server Driver][SQL Server]The name \'arcldr.exe\' is not permitted in this context.
Only constants, expressions, or variables allowed here. Column names are not permitted.\'. Process stopped. Use Step or Run to continue.

Det er hvad den skriver, og \'arcldr.exe\' er det filnavn variablen filename indeholder.
Avatar billede martinlind Nybegynder
11. august 2001 - 14:09 #5
Den skriver at den ikke ser arcldr.exe som en string, fordi du skal havde det stående sådan i dit statement \'arcldr.exe\' og det for du ved at putte \'\' to på i dein delphi kode, eller også laver du det med paramters i stedet :

Query1.Close;
Query1.SQL.Text(\'INSERT INTO filarkiv (filnavn, fil_sti) VALUES( :filename, :filepath\');
Query1.Prepare;
Query1.ParamByName(\'filename\').AsString := \'arcld.exe\';
Query1.ParamByName(\'filepath\').AsString := \'C:\\\';
Query1.SQL.ExecSQL;

/Martin
Avatar billede erikjacobsen Ekspert
11. august 2001 - 14:24 #6
Selvfølgelig kan man gøre som martin skriver, men har du prøvet
Query1.SQL.Add(\'INSERT INTO filarkiv (filnavn, fil_sti) VALUES(\'\'\' + filename + \'\'\',\'\'\' + filepath + \'\'\')\');
Beskeden betyder - groft sagt - at du mangler stroffer :)
Avatar billede martinlind Nybegynder
11. august 2001 - 23:43 #7
Det er jo faktisk også det jeg skriver, og det er ikke groft sagt, det ER det beskeden betyder
Avatar billede erikjacobsen Ekspert
11. august 2001 - 23:46 #8
:) en dag vil jeg til at læse alle indlæg grundigt inden jeg skriver noget ...
en dag ...
Avatar billede martinlind Nybegynder
11. august 2001 - 23:52 #9
*GGG*
Avatar billede ahlforn Nybegynder
12. august 2001 - 19:37 #10
Tak for hjælpen. Det virker perfekt :-)
Avatar billede martinlind Nybegynder
12. august 2001 - 21:46 #11
Selv tak :)
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