Gå til innhold

Anbefalte innlegg

Spørrring:

SELECT Komponent.Komp_ID, Komponent.Komp_Name, Komponent.Prog_ID, Komponent.Rom_ID,

Komponent.Type_ID, Komponent.Service, Komponent.IpAdress,

Type.Type_ID AS Expr1, Type.Type_Navn, Type.Type_Brand, Rom.Rom_ID AS Expr2,

Rom.Rom_Name, Rom.Rom_Code, Rom.Dep_ID, Department.Dep_ID AS Expr3,

Department.Dep_Name, Department.Dep_Floor

FROM Department INNER JOIN

Rom ON Department.Dep_ID = Rom.Dep_ID INNER JOIN

Komponent ON Rom.Rom_ID = Komponent.Rom_ID INNER JOIN

Type ON Komponent.Type_ID = Type.Type_ID

WHERE (Komponent.Komp_Name = [@Komponent.Komp_Name])

 

Error:

error source: .Net sqlClient Data provider

error message: invalid column name "@Komponent.Komp_name"

 

 

 

Noen som har noen forslag til hva som kan være galt? Har prøvd en stund nå.

 

 

Takk på forhånd.

 

mvh

Jonas

Lenke til kommentar
Videoannonse
Annonse

Hva er [@Komponent.Komp_Name]? Er @Komponent er table variable siden du skriver .Komp_Name? I såfall skal klammeparentesene være rundt hvert enkelt element slik: [@Komponent].[Komp_Name]

Og selv om det er en table variable så er den jo ikke definert i FROM delen av spørringen.

Lenke til kommentar

kaffenils: selv om han ikke sier noe om dette, er @ tegnet man bruker foran variabler som skal settes inn i spørringen dynamisk.

 

i PHP ville man kanskje skrevet

$sql = "SELECT * FROM table WHERE a =" . $foo . " LIMIT 1;";

 

mens man i .NET bruker en annen måte, for å sikre input:

connection.SqlParameters.Add("@CONST", "Verdi som skal sikres mot tull som SQL injections o.l her");
string sql = "SELECT * FROM table WHERE a = @CONST";
...

hvis jeg husker rett da... poenget er, alfakrøllen har ingenting med databasen å gjøre. hadde trådstarter sagt noe om programmeringsspråk og databasesystem, hadde det kanskje vært lettere å hjelpe også. Feilmeldingen tyder på at det er MS SQL.

 

og hadde du fått en syntax error i spørringen hadde feilen faktisk hørt hjemme i denne kategorien også. dette hører vel heller til i .NET-kategorien

Endret av hockey500
Lenke til kommentar
kaffenils: selv om han ikke sier noe om dette, er @ tegnet man bruker foran variabler som skal settes inn i spørringen dynamisk.

 

Nei sier du det. Det visste jeg ikke :p.

Da har du sikkert hørt om table variabler som også prefixes med @, og siden jonasfd hadde skrevet @Komponent.Komp_Name spurte jeg rett og slett om det var en table variabel han på en eller annen snodig måte prøver å referere til.

Lenke til kommentar
hvis jeg husker rett da... poenget er, alfakrøllen har ingenting med databasen å gjøre.

 

I .Net og SqlParameter har parameternavnet ALT med databasen å gjøre. Navnet du skriver inn i .Net MÅ matche parameternavnet i SQL statementet. I klassisk ADO var det ikke slik med mindre du satte NamedParameters=True, og da kun for stored procedures.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...