hoe gebruik je scope_identity in Visual Studio 2005?

Waar de SELECT SCOPE_IDENTITY() -instructie moet worden geplaatst als ik de laatst ingevoegde identiteit wil hebben, plaats ik deze in een andere invoegtoepassing in de query maar krijg ik niets

SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString);

connection.Open();

string insACmd = "insert into admin (userName, password) values (@userName, @password) SELECT SCOPE_IDENTITY();";
SqlCommand insertAdmin = new SqlCommand(insACmd, connection);

insertAdmin.Parameters.AddWithValue("@userName", TextBox1.Text);
insertAdmin.Parameters.AddWithValue("@password", TextBox2.Text);

string insertedID = insertAdmin.ExecuteScalar().ToString();

connection.Close(); 

Bedankt.

1
Ik weet niet wat je aan het doen bent - maar dit werkt prima in mijn geval. Krijgt u een foutmelding? Zo ja: welke fout? Welke retourwaarde krijgt u in ingevoerdID - NULL ? lege string? Iets anders?
toegevoegd de auteur marc_s, de bron
WAT is die foutmelding? Ik kan je scherm niet zien - je moet ons vertellen wat de fout is !!
toegevoegd de auteur marc_s, de bron
Heb je dit antwoord gecontroleerd?
toegevoegd de auteur Pankaj, de bron
Heeft u geen puntkomma nodig na de insert-instructie? Het lijkt erop dat het invoegen en selecteren zich op dezelfde regel bevinden zonder terminatietermijn
toegevoegd de auteur Charleh, de bron
Ik heb die code ingevoegd in try block en inside catch Ik heb een foutmelding dus toen ik mijn website draaide kreeg ik die foutmelding ook merkte ik dat er niks in mijn DB paste
toegevoegd de auteur user1477701, de bron
Charleh Ik heb geprobeerd een puntkomma te plaatsen, maar het probleem doet zich nog steeds voor ..
toegevoegd de auteur user1477701, de bron
marc_s het is gewoon een fout die ik in het catch-blok heb getypt, ik dacht dat mijn uitleg duidelijk was
toegevoegd de auteur user1477701, de bron

2 antwoord

using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString))
{
    connection.Open();
    string insACmd = "insert into admin (userName, password) values (@userName, @password); DECLARE @ID INT OUTPUT; SET @ID=SCOPE_IDENTITY()";
    using (SqlCommand insertAdmin = new SqlCommand(insACmd, connection))
    {
        insertAdmin.Parameters.AddWithValue("@userName", TextBox1.Text);
        insertAdmin.Parameters.AddWithValue("@password", TextBox2.Text);

        SqlParameter p = new SqlParameter();
        p.ParameterName = "@ID";
        p.Size = 4;
        p.Direction = ParameterDirection.Output;
        insertAdmin.Parameters.Add(p);
        insertAdmin.ExecuteNonQuery();
        int idOut = (int)p.Value;
        connection.Close();
    }
}
0
toegevoegd
@ user1477701 - Dit is een C# -code.
toegevoegd de auteur Pankaj, de bron
bedankt Kanavi, ik denk dat je VB gebruikt en ik gebruik eigenlijk C# kun je me alsjeblieft vertellen hoe deze zin te schrijven DECLARE @ID INT OUTPUT; SET @ ID = SCOPE_IDENTITY() in C# omdat ik een beginneling ben in zowel asp.net als VB
toegevoegd de auteur user1477701, de bron
ik krijg nog steeds niets :( allemaal bedankt
toegevoegd de auteur user1477701, de bron

probeer dit `

SELECT UserId = SCOPE_IDENTITY()

dat is als u UserId gebruikt, als de sleutel

0
toegevoegd
probeer je huidige selectiegebied te vervangen en geef de ID op die je hiermee wilt ophalen
toegevoegd de auteur Philip Badilla, de bron
Wilt u het in plaats van de huidige geselecteerde scope_identity-instructie of als een andere query plaatsen?
toegevoegd de auteur user1477701, de bron