27. februar 2007 - 16:29
Der er
22 kommentarer og 1 løsning
problem med sqldatareader
Hej eksperter, jeg har denne kode : SqlConnection connection = new SqlConnection(ConfigurationSettings.AppSettings["DatabaseString"]); SqlCommand command = new SqlCommand(); connection.Open(); command.Connection = connection; command.CommandText = "SELECT * FROM users where user_id ='1'"; SqlDataReader reader = command.ExecuteReader(); og det virker uden problemmer men hvis jeg ændre det til det her : SqlConnection connection = new SqlConnection(ConfigurationSettings.AppSettings["DatabaseString"]); SqlCommand command = new SqlCommand(); connection.Open(); command.Connection = connection; command.CommandText = "SELECT * FROM users where user_name = 'ole'"; SqlDataReader reader = command.ExecuteReader(); så laver den fejl i SqlDataReader reader = command.ExecuteReader(); hvorfor ? og det er en ole i db det er den samme post den henter som i første eks.
Annonceindlæg fra Computerworld
27. februar 2007 - 16:30
#1
hvad er fejlen ?
27. februar 2007 - 16:31
#2
husker du at kalde efter du har brugt readeren i første omgang ? connection.Close();
27. februar 2007 - 16:31
#3
sikker på kolonnenavnene passer?
27. februar 2007 - 16:32
#4
Der er vel en fejl i dine felt-datatyper, eller et felt der ikke eksisterer...
27. februar 2007 - 16:38
#5
ja kolonnenavnene passer og Conn'en bliver lukket. The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator. kolonnen user_name i db er sat til "Text" og user_id er sat til "int"
27. februar 2007 - 16:39
#6
user_name skal være varchar(255)
27. februar 2007 - 16:39
#7
varchar kan indeholde op til 8000 tegn
27. februar 2007 - 16:39
#8
ok hvorfor kan man ikke bruge text ?
27. februar 2007 - 16:40
#9
text bruger man kun meget sjældent til at gemme større tekst mængder.
27. februar 2007 - 16:40
#10
hvad gør man så hvis man har en text på over 8000 tegn ?
27. februar 2007 - 16:40
#11
Det er fordi der nogle begrænsninger, som blandt andet den du er stødt ind i.
27. februar 2007 - 16:40
#12
text burde også være ok.
27. februar 2007 - 16:41
#13
Så bruger man text eller deler teksten op på flere varchar felter.
27. februar 2007 - 16:41
#14
hvordan henter man så test som er gemt som "Text"
27. februar 2007 - 16:41
#15
Du kan ikke bruge = på et text felt. Du skal bruge Like og den er mere usikker.
27. februar 2007 - 16:42
#16
SELECT * FROM users where user_name LIKE 'ole'
27. februar 2007 - 16:42
#17
ok
27. februar 2007 - 16:42
#18
med varchar felter kan du bruge =.
27. februar 2007 - 16:43
#19
tak skal i have smid nogle svar !!
27. februar 2007 - 16:43
#20
ved ikke om det kan lade sig gøre:) command.CommandText = "SELECT * FROM users where CAST(user_name as nvarchar(255)) = 'ole'";
27. februar 2007 - 16:44
#21
svar :)
27. februar 2007 - 16:44
#22
pas
27. februar 2007 - 16:53
#23
man kan sikkert godt lave det der Convert eller type Cast trick, men sikkert mig som laver det forkert;o) anyways - det giver ikke mening at gemme i "Text" hvis blot det er så lidt tekst der skal gemmes;o)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.