Avatar billede cliffha Nybegynder
14. oktober 2010 - 20:57 Der er 3 kommentarer og
1 løsning

stored procedure i MS SQL

Hej

Når jeg prøver at læse data fra min stored procedure funktion, få jeg denne fejlmelding:
Invalid attempt to read when no data is present.

Min stored procedure i MS SQL ser sådan ud:

ALTER PROCEDURe dbo.usp_GetUser
@initialer varchar(15)

AS

if (select id from brugere where (Initialer = @initialer)) is null
BEGIN

DECLARE @ErrorText varchar(100)
set @ErrorText ='Brugeren med initialerne '+ (@initialer) +' findes ikke i systemet';
RAISERROR (@ErrorText, 11, 1)

END

else
begin
SELECT navn, Aktiv, Brugertype FROM brugere where (Initialer = @initialer)
END

Min C# kode ser sådan ud:

        Bruger b = null;

        SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True");

        SqlCommand cmd = new SqlCommand("usp_GetUser", conn);

        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.Add("@initialer", SqlDbType.VarChar);
        cmd.Parameters["@initialer"].Direction = ParameterDirection.Input;
        cmd.Parameters["@initialer"].Value = initialer;

        SqlDataReader rdr = null;
        try
        {
            conn.Open();
            rdr = cmd.ExecuteReader();

            if (rdr.HasRows)
            {
                string navn = (string)rdr["navn"];
                string aktiv = "";
                string brugerType = rdr.GetString(rdr.GetOrdinal("brugerType"));

                b = new Bruger(navn, initialer, null, aktiv, brugerType);
            }
        }

        finally
        {
            rdr.Close();
            conn.Close();
        }

        return b;
Avatar billede aaberg Nybegynder
14. oktober 2010 - 21:04 #1
Jeg tror det er fordi du bruger SqlReader klassen forkert.

I stedet for:
if (rdr.HasRows)

prøv
if (rdr.Read())

Read() metoden får positionen i readeren til at gå en frem. Hvis denne ikke har været kaldt, vil der ikke være data tilgængelig.
Avatar billede cliffha Nybegynder
14. oktober 2010 - 22:45 #2
Mange tak, nu virker det.
Avatar billede aaberg Nybegynder
14. oktober 2010 - 22:54 #3
Jeg smider et svar :)
Avatar billede cliffha Nybegynder
15. oktober 2010 - 20:08 #4
Så smider jeg lige nogle points.
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