Je suppose que vous voulez récupérer l'identité de l'étudiant nouvellement inséré, puis l'insérer dans la table "Records", non?
Je suggère fortement que vous utilisez SCOPE_IDENTITY()
au lieu de @@ IDENTITY qui a quelques problèmes si vous avez par exemple déclenche sur votre table. Pinal Dave a un great blog post à propos de ces problèmes.
De même, si vous appelez SQL Server à partir de C#, je vous recommande fortement d'utiliser le fournisseur SQL .NET natif (SqlConnection, SqlCommand, etc.) - et non oledbcommand.
Essayez cette
using (SqlConnection _con = new SqlConnection("server=(local);database=TEST;integrated security=SSPI;"))
{
string queryStmt = "INSERT INTO dbo.Students (StudentName) VALUES('reza'); " +
"INSERT INTO dbo.Records(RecordID, StudentID) VALUES (20, SCOPE_IDENTITY());";
using (SqlCommand _cmd = new SqlCommand(queryStmt, _con))
{
try
{
_con.Open();
_cmd.ExecuteNonQuery();
_con.Close();
}
catch (Exception exc)
{
string msg = exc.Message;
}
}
}
Cela fonctionne certainement, je viens de tester avec succès dans mon cadre.
Comment exécutez-vous la requête dans C#?Si vous l'exécutez dans ssms, obtenez-vous les résultats attendus? – Ray
je le lance par oledbcommand –
Si vous le divisez en deux exécutions de requêtes distinctes, obtenez-vous toujours la même erreur? –