Avatar billede brian-johansen Nybegynder
21. august 2006 - 09:45 Der er 25 kommentarer og
2 løsninger

simpel sql statement med where virker ikke ?

Hej,

Jeg er løbet ind i et lille problem, af en eller anden grund vil følgende SQL stament ikke virke:

Select * From PS where sek="+ id

id er en querystring som fx. kan være kokken eller bad.

Men hvis jeg bare sætter den ind i min query analyser så ser den sådan ud:

SELECT    Id, text, skab, sek, navn, mainPic
FROM        PS
WHERE    (sek = 'kokken')

Så for jeg følgende fejl: The datatypes text and vachar are incompatible in the equal to operator

Hvis jeg skriver det sådan her :

SELECT    Id, text, skab, sek, navn, mainPic
FROM        PS
WHERE    (sek = kokken)
Så for jeg bare at vide at kokken ikke er en valid kolonne.
Min table ser sådan ud
Id    int   
text    text   
skab    int   
sek    text   
navn    text   

Er der nogen der kan se hvad der er galt ?

mvh Brian
Avatar billede mcgoat Nybegynder
21. august 2006 - 09:47 #1
Select * From PS where sek='+ id + '

du skal vel have ' på hver side af id før den kan være: 'kokken'
Avatar billede websam Nybegynder
21. august 2006 - 09:48 #2
Select * From PS where sek="'+ id + '"

burder gøre meget ved det ;O)

/Websam
Avatar billede websam Nybegynder
21. august 2006 - 09:50 #3
' på hver side indikere at der er tale om en tekst streng.

/Websam
Avatar billede websam Nybegynder
21. august 2006 - 09:51 #4
Ups lavede en fejl :

Select * From PS where sek='"+ id + "'
Avatar billede brian-johansen Nybegynder
21. august 2006 - 09:56 #5
jamen når jeg så skriver det sådan så for jeg stadig den fejl der hedder:
The data types text and varchar are incompatible in the equal to operator.

og jeg aner ikke hvorfor jeg for den, for det er to ens datatyper (i hvertfald så vidt jeg ved)

mvh Brian
Avatar billede websam Nybegynder
21. august 2006 - 10:03 #6
Hvordan ser den kode ud der trækker i databasen ?

Hvis jeg laver følgende :

string Sql = "Select * From PS Where sek = "'+ Id +'";

Så har det altid virket.

/Websam
Avatar billede brian-johansen Nybegynder
21. august 2006 - 10:05 #7
string query = "Select * From PS where  sek= '" + id + " '";
        adp = new SqlDataAdapter(query, myConn);
        myConn.Open();
        adp.Fill(ds);


mvh Brian
Avatar billede nielle Nybegynder
21. august 2006 - 10:05 #8
Det er ikke nogen god ide at du har et felt som hedder "text" - dette er et reserveret ord.
Avatar billede websam Nybegynder
21. august 2006 - 10:05 #9
Ommer :

string Sql = "Select * From PS Where sek = '"+ Id +"'";
Avatar billede nielle Nybegynder
21. august 2006 - 10:06 #10
Du børe ændre navnet, eller også fortælle din SQL-database at det skal behandle den som et navn:


I Access eller SQL Server:

SELECT    Id, [text], skab, sek, navn, mainPic
FROM        PS
WHERE    (sek = 'kokken')


I MySQL:

SELECT    Id, `text`, skab, sek, navn, mainPic
FROM        PS
WHERE    (sek = 'kokken')
Avatar billede websam Nybegynder
21. august 2006 - 10:07 #11
Som nielle skriver så prøv lige at ændre :

text    text

Til :

Description    text
Avatar billede nielle Nybegynder
21. august 2006 - 10:08 #12
Er det i øvrigt en Acces database du bruger, eller er det noget andet?
Avatar billede brian-johansen Nybegynder
21. august 2006 - 10:10 #13
Ok det skal jeg lige huske, kan det være den som giver problemer ?


mvh Brian
Avatar billede brian-johansen Nybegynder
21. august 2006 - 10:10 #14
MSSQL database

mvh Brian
Avatar billede brian-johansen Nybegynder
21. august 2006 - 10:12 #15
nu har jeg ændret text til context

mvh Brian
Avatar billede brian-johansen Nybegynder
21. august 2006 - 10:12 #16
Men med stadig samme fejl :(

mvh Brian
Avatar billede nielle Nybegynder
21. august 2006 - 10:12 #17
Ja, det kan sagtens være det som giver problemer.

Når du nu bruger SQL Server (MS SQL) så skal du desuden overveje om du overhovedet skal bruge typen TEXT til dine felter - ofte et VARCHAR(x) et menet bedre valg.
Avatar billede nielle Nybegynder
21. august 2006 - 10:14 #18
Havde det været Access så var TEXT derimod det rigtige at bruge:

Text i Access
=
VARCHAR(50) i SQL Server
Avatar billede brian-johansen Nybegynder
21. august 2006 - 10:15 #19
ok, jamen det kan være jeg bare skal prøve at ændre den.

Ved du hvorfor er den bedre ?

mvh Brian
Avatar billede nielle Nybegynder
21. august 2006 - 10:17 #20
Hverken dit sek-, eller dit navn-felt, lyder som om at de skulle være af typen TEXT, og det er helt sikkert sek-tilfældet der fejler for din SQL-sætning.

Dit felt context kunne muligvios godt lægge op til at være TEXT...
Avatar billede nielle Nybegynder
21. august 2006 - 10:18 #21
Felter af typen TEXT er beregnet til at indeholde store mængder af tekst. En VARCHAR(50) er domensioneret til at indeholde maks 50 tegn. Det er vel ingen grund til at fråse med pladsen i databasen?
Avatar billede Slettet bruger
21. august 2006 - 10:31 #22
Prøv at udskrive din sql til siden - id indeholder måske ikke det, du regner med.
Avatar billede Slettet bruger
21. august 2006 - 10:32 #23
og paste din sql her hvis du ikke selv kan regne fejlen ud.
Avatar billede brian-johansen Nybegynder
21. august 2006 - 10:39 #24
Jeg tror det lykkes med at lave den om til en VARCHAR, i hvertfald så for jeg først min fejl ved:
antalsider = ds.Tables["id"].Rows.Count;

Så det må jeg betyder at den har forstået budskabet.

Jeg siger mange tak for hjælpen, til alle sammen

Ligger Websam og nielle et svar ?

mvh Brian
Avatar billede nielle Nybegynder
21. august 2006 - 10:47 #25
Er du sikker på at du har en tabel som du kalder "id"?

... og et svar :^)
Avatar billede websam Nybegynder
21. august 2006 - 10:58 #26
Jo det kan jeg da godt ;o)
Avatar billede brian-johansen Nybegynder
21. august 2006 - 11:04 #27
nej, fand fejlen :D

Men tak for hjælpen

mvh BRian
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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