webForumDet fria alternativet

Kolla att användarnamnet inte redan är registrerat

.NET

13 svar · 762 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Frågan#1

Hej

Hur kollar jag att användarnamnet är unikt innan jag kör min insert?

Medlem sedan aug. 20003 575 inlägg
#2

Tja, du kan göra på två sätt, det ena är snyggare än det andra.

1. Gör en Select fråga som kollar om det finns någon med det användarnamnet.
2. Försök att registrera (sätt givetvis att det fältet som skall innehålla användarnamnet måste vara unikt) fånga felet.

Medlem sedan jan. 20013 406 inlägg
#3

I asp skapade jag ett recodset av sql strängen och kollade om det var tomt.
If Rs.Eof Then
'gör insert
Else
'fel
End If

Men recodset finns ju inte i asp.net. Hur kan jag kolla det på liknande sätt?
Använder jag ett dataset?

Medlem sedan aug. 20003 575 inlägg
#4
// DatSet = Ds
Ds.Tables[0].Rows.Count

Har för mig det är så :)

Medlem sedan jan. 20013 406 inlägg
#5

Behöver man stänga databaskopplingar och dataset som man skapar?
I kod exempel och liknande har jag sätt att de inte stänger.

Finns väl någon typ av garbage collector som kastar oanvända objekt. Ska man stänga ändå för snabbhet?

Medlem sedan jan. 20013 406 inlägg
#6

Hur sätter jag i MS SQL 2005 att en rad ska vara unik? Det finns redan en räknare som identety är satt på.

Medlem sedan maj 20012 812 inlägg
#7

Finns väl någon typ av garbage collector som kastar oanvända objekt. Ska man stänga ändå för snabbhet?

Ja det finns en garbage collector som kastar objekt som du inte längre använder, men det vet du aldrig när det sker, det kan ta någon millisekund efter det att du inte använder objektet mer, tills en vecka efter det att du inte använder objektet mer.

Du skall alltid göra en Close() eller Dispose() på objekt som har dessa metoder på sig, generellt punkt slut. Och det har med hantering av resurs, och speciellt när det gäller databaser så stängs inte din koppling till databasen förren du gör close() på connection, och den vill du stänga så snabbt som möjligt...

Hur sätter jag i MS SQL 2005 att en rad ska vara unik? Det finns redan en räknare som identety är satt på.

Du skall skapa ett 'Index' höger klicka på tabellen och välj 'all task'. Där kan du välja att skapa indexes och när du skapar ett nytt index så väljer du en kolumn och väljer om den skall vara unik.

- M

Medlem sedan jan. 20013 406 inlägg
#8

Tack funkar perfekt med fånga felmeddelandet.

Medlem sedan dec. 2005664 inlägg
#9

Som gladh säger är det ett måste att köra close och dispose på kopplingen. Vi har stött på problem mot en kund där vi missade detta på ett par ställen då vi missade hanteringen när exception kastades. Ett sätt att göra det säkert är att deklarera kopplingen med using() { }. Då behöver man inte hålla koll på stägningarna.

Medlem sedan jan. 20013 406 inlägg
#10

cok skrev:

Som gladh säger är det ett måste att köra close och dispose på kopplingen. Vi har stött på problem mot en kund där vi missade detta på ett par ställen då vi missade hanteringen när exception kastades. Ett sätt att göra det säkert är att deklarera kopplingen med using() { }. Då behöver man inte hålla koll på stägningarna.

Förklara gärna mer och dumpa lite kod

Medlem sedan juni 200511 inlägg
#11

Här har du ett exempel på hur du deklarerar objekt med "using {}".

    public static void AddAccount(string Parameter1, string parameter2.....)
    {
        using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["Members"].ConnectionString))
        {
            using (SqlCommand command = new SqlCommand("AddAccount", connection))
            {
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.Add(new SqlParameter("@Parameter1", Parameter1));
                command.Parameters.Add(new SqlParameter("@Parameter2", parameter2));
                // osv...

                connection.Open();

                command.ExecuteNonQuery();               
            }
        }
    }
Medlem sedan dec. 2005664 inlägg
#12

Det du deklarerar med hjälp av using, disposas när koden har körts.

Medlem sedan juli 20011 084 inlägg
#13

Kan man vara helt säker på det? :OO Att den stänger med en gång dvs.

Jag brukar av ren vana ändå stänga anslutningen när den är klar även om jag använder using. Men om man använder som i exemplet skall man aldrig behöva stänga anslutningen själv?

Medlem sedan dec. 19996 721 inlägg
#14

mozilla skrev:

Kan man vara helt säker på det? :OO Att den stänger med en gång dvs.

Jag brukar av ren vana ändå stänga anslutningen när den är klar även om jag använder using. Men om man använder som i exemplet skall man aldrig behöva stänga anslutningen själv?

Ja, den stänger på en gång. Avslutet på using gör att Dispose anropas. Dispose i sin tur anropar Close.

260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)