Avatar billede burningice Nybegynder
04. juni 2003 - 15:26 Der er 4 kommentarer og
1 løsning

SqlCommand og Parameters

Jeg har en Stored Procedure i min MS SQL, der vælger en nyhed ud fra ID'et, og sender HeadLine og Body tilbage som Output.

Jeg har en SqlCommand-instans hvor jeg tilføjer mine parametre:

.Parameters.Add("@NewsID", SqlDbType.Int, 4).Value = sNewsId
.Parameters.Add("@NewsHeadline", SqlDbType.VarChar, 255).Direction = ParameterDirection.Output
.Parameters.Add("@NewsBody", SqlDbType.Text, 16).Direction = ParameterDirection.Output

Der er dog et lille problem, og det er, at den brokker sig over min @NewsBody-parameter. Hvis jeg sætter størrelen (de 16) til ingenting, så får jeg en Invalid Size-error. Hvis den står til 16, så får jeg en "A severe error occurred on the current command. The results, if any, should be discarded. "-error

Hvad i alverden går der galt? hvordan får jeg lavet min parameter så jeg kan få indholdet af min Body-kulonne ud ?
Avatar billede thrytter Nybegynder
04. juni 2003 - 19:49 #1
Datatypen text kan indeholde op til 2.147.483.647 karakterer.

Prøv at forøge størrelsen lidt - måske det hjælper.
Avatar billede burningice Nybegynder
04. juni 2003 - 20:25 #2
jeg har fundet ud af, at det er fordi at min stored procedure ikke må have datatypen text som output... det virker meget underligt ?! nogen der ved hvordan man gør istedet ? at bruge varchar er ikke det optimale, da den maks kan bestå af 8000 tegn :(
Avatar billede thrytter Nybegynder
04. juni 2003 - 22:30 #3
Troede at din SP fungerede med datatypen text som returparamater. Kunne heller ikke selv få det til at fungere, men tror at det virke med ledt pointergymnastik.

Lav en almindelig SP der henter de nødvendige nyhedsdata:
  CREATE PROCEDURE up_get_newsById
    @NewsId int

  select  NewsHeadline, NewsBody
  from    News_T
  where  NewsId = @NewsId

NewsBody bibeholder datatypen text

Og en vb.net funktion i stil med

Public Sub NewsLoad(ByVal iNewsId As Integer, ByRef sNewsHeadline As String, ByRef sNewsBody As String)
  Dim sqlConn As SqlConnection
  Dim sqlReader As SqlDataReader
  Dim sqlComm As SqlCommand

  sqlConn = New SqlConnection(--  Indsæt din egen connectionstring her --)
  sqlConn.Open()

  sqlComm = New SqlCommand("up_get_newsById", sqlConn)
  sqlComm.CommandType = CommandType.StoredProcedure
  sqlComm.Parameters.Add("@NewsId", iNewsId)

  sqlReader = sqlComm.ExecuteReader()

  While sqlReader.Read           
    sNewsHeadline = sqlReader("NewsHeadline").ToString
    sNewsBody = sqlReader("NewsBody").ToString
  End While

  sqlConn.Close()
End Sub

Lidt hurtig kode som burde virke.
Avatar billede burningice Nybegynder
05. juni 2003 - 10:45 #4
ja... jeg havde dog bare håbet at jeg kunne slippe for den reader, men det lader sig åbenbart ikke gøre :/

smid et svar, og du får pointene
Avatar billede burningice Nybegynder
14. juni 2003 - 13:38 #5
lukker
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