Avatar billede humlebien Novice
04. juli 2011 - 15:45 Der er 3 kommentarer og
1 løsning

VS2010 SqlDataReader

Jeg har nedenstående kodestykke, men det returnerer altid 99 = SqlDataReaderen ikke får læst ordentligt...
Er der nogen der kan finde fejlen??

Har "vedhæftet" kode og stored procedure

***********************************************************
Kildekode:
***********************************************************
Function OpretFag(ByVal iFag_type As Integer, ByVal bFag_aktiv As Boolean, ByVal sFag_titel As String, ByVal sFag_manchet As String, ByVal sFag_indhold As String,
                      ByVal sFag_amuNr As String, ByVal sFag_kursusbevis As String, ByVal sFag_modulstatus As String, ByVal sFag_omfang As String, ByVal sFag_eksamen As String,
                      ByVal sFag_adgang As String, ByVal Sfag_kontakt As String, ByVal sFag_Jobmuligheder As String, ByVal sFag_blivkontaktet As String, ByVal sFag_seoBeskrivelse As String,
                      ByVal sFag_seoOrd As String, ByVal bFag_visWWW As Boolean) As Integer
        Dim sqlCon As New SqlConnection(System.Configuration.ConfigurationManager.AppSettings("ConnectionString"))
        Dim cmd As New SqlCommand
        Dim oReader As SqlDataReader
        Dim iResultat As Integer

        cmd.CommandText = "FagOpret"
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.Add(New SqlParameter("@fag_type", SqlDbType.Int))
        cmd.Parameters("@fag_type").Value = iFag_type
        cmd.Parameters.Add(New SqlParameter("@fag_aktiv", SqlDbType.Bit, 1))
        cmd.Parameters("@fag_aktiv").Value = bFag_aktiv
        cmd.Parameters.Add(New SqlParameter("@fag_titel", SqlDbType.VarChar, 100))
        cmd.Parameters("@fag_titel").Value = sFag_titel
        cmd.Parameters.Add(New SqlParameter("@fag_manchet", SqlDbType.VarChar, 500))
        cmd.Parameters("@fag_manchet").Value = sFag_manchet
        cmd.Parameters.Add(New SqlParameter("@fag_indhold", SqlDbType.VarChar, -1))
        cmd.Parameters("@fag_indhold").Value = sFag_indhold
        cmd.Parameters.Add(New SqlParameter("@fag_amuNr", SqlDbType.VarChar, 100))
        cmd.Parameters("@fag_amuNr").Value = sFag_amuNr
        cmd.Parameters.Add(New SqlParameter("@fag_kursusbevis", SqlDbType.VarChar, 500))
        cmd.Parameters("@fag_kursusbevis").Value = sFag_kursusbevis
        cmd.Parameters.Add(New SqlParameter("@fag_modulstatus", SqlDbType.VarChar, 500))
        cmd.Parameters("@fag_modulstatus").Value = sFag_modulstatus
        cmd.Parameters.Add(New SqlParameter("@fag_omfang", SqlDbType.VarChar, 500))
        cmd.Parameters("@fag_omfang").Value = sFag_omfang
        cmd.Parameters.Add(New SqlParameter("@fag_eksamen", SqlDbType.VarChar, 500))
        cmd.Parameters("@fag_eksamen").Value = sFag_eksamen
        cmd.Parameters.Add(New SqlParameter("@fag_adgang", SqlDbType.VarChar, 500))
        cmd.Parameters("@fag_adgang").Value = sFag_adgang
        cmd.Parameters.Add(New SqlParameter("@fag_kontakt", SqlDbType.VarChar, 500))
        cmd.Parameters("@fag_kontakt").Value = Sfag_kontakt
        cmd.Parameters.Add(New SqlParameter("@fag_Jobmuligheder", SqlDbType.VarChar, 500))
        cmd.Parameters("@fag_Jobmuligheder").Value = sFag_Jobmuligheder
        cmd.Parameters.Add(New SqlParameter("@fag_blivkontaktet", SqlDbType.VarChar, 500))
        cmd.Parameters("@fag_blivkontaktet").Value = sFag_blivkontaktet
        cmd.Parameters.Add(New SqlParameter("@fag_seoBeskrivelse", SqlDbType.VarChar, 200))
        cmd.Parameters("@fag_seoBeskrivelse").Value = sFag_seoBeskrivelse
        cmd.Parameters.Add(New SqlParameter("@fag_seoOrd", SqlDbType.VarChar, 300))
        cmd.Parameters("@fag_seoOrd").Value = sFag_seoOrd
        cmd.Parameters.Add(New SqlParameter("@fag_visWWW", SqlDbType.Bit, 1))
        cmd.Parameters("@fag_visWWW").Value = bFag_visWWW
        cmd.Connection = sqlCon
        sqlCon.Open()
        oReader = cmd.ExecuteReader()
        oReader.Read()
        If oReader.HasRows Then
            iResultat = oReader.Item(0)
        Else
            iResultat = 99
        End If
        oReader.Close()
        sqlCon.Close()
        sqlCon = Nothing
        Return iResultat
    End Function

***********************************************************
    Stored procedure:
***********************************************************
PROCEDURE FagOpret
@fag_type int, @fag_aktiv bit, @fag_titel varchar(100), @fag_manchet varchar(500), @fag_indhold varchar(max),
@fag_amuNr varchar(100), @fag_kursusbevis varchar(500), @fag_modulstatus varchar(500), @fag_omfang varchar(500),
@fag_eksamen varchar(500), @fag_adgang varchar(500), @fag_kontakt varchar(500), @fag_Jobmuligheder varchar(500),
@fag_blivkontaktet varchar(500), @fag_seoBeskrivelse varchar(200), @fag_seoOrd varchar(300), @fag_visWWW bit
AS
    declare @indeks int
BEGIN

SET NOCOUNT ON;

BEGIN TRANSACTION
    insert into Fag values
    (@fag_type, @fag_aktiv, @fag_titel, @fag_manchet, @fag_indhold, @fag_amuNr, @fag_kursusbevis, @fag_modulstatus, @fag_omfang, @fag_eksamen, @fag_adgang, @fag_kontakt, @fag_Jobmuligheder, @fag_blivkontaktet, @fag_seoBeskrivelse, @fag_seoOrd, @fag_visWWW)
    if @@ERROR = 0
        begin
            COMMIT TRANSACTION
            set @indeks = @@IDENTITY
        end
    else
        begin
            ROLLBACK TRANSACTION
            set @indeks = 0
        end   
       
    return @indeks       
   
END
Avatar billede arne_v Ekspert
04. juli 2011 - 15:56 #1
cmd.ExecuteReader()

forsoeger at laese et result set, men din SP returnerer ikke et result set - den returnere kun en return value

return values skal laeses paa en anden maade - jeg finder lige et eksempel
Avatar billede arne_v Ekspert
04. juli 2011 - 15:58 #2
kode snippet:

        SqlParameter ret = new SqlParameter("@retval", SqlDbType.Int);
        ret.Direction = ParameterDirection.ReturnValue;
        cmd.Parameters.Add(ret);
        cmd.ExecuteNonQuery();

og saa vil (int)cmd.Parameters["@retval"].Value indeholde returvaerdien.
Avatar billede humlebien Novice
06. juli 2011 - 09:50 #3
Tak for hjælpen - det var det der skulle til!
Hvis du giver et svar, så giver jeg point :o)
Avatar billede arne_v Ekspert
06. juli 2011 - 15:51 #4
svar
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

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