Zapisanie z pobraniem ID do kolejnego zapisu

0

Witam, mam mały problem.
Mam taki oto kod do łączenia i dodania rekordu do bazy(MS SQL).
Potrzebuje aby po dodaniu tego rekordu, poznać jego ID, gdyż będzie mi potrzebne aby dodać je do innej tabeli.
Nadanie ID nie leży w mojej gesti i niestety nie wiem jak to pobrać, próbowałem zapytania do bazy, ale nie działa(źle zrobiłem-najbardziej prawdopodobne).
Zwyczajnie chce by mi przypisało to id do zwykłej zmiennej, którą mogę użyć później.

                    SqlConnectionStringBuilder connString = new SqlConnectionStringBuilder();
                    connString.DataSource = ".";
                    connString.InitialCatalog = "Badania";
                    connString.IntegratedSecurity = true;

                    SqlConnection conn = new SqlConnection(connString.ConnectionString);
                    conn.Open();
                    
                    string insert = "INSERT INTO Badania (tytul, id_rodzaju, rok_realizacji, id_kierownika) VALUES (@tytul, @id_rodzaju, @rok_realizacji, @id_kierownika)";
                    SqlCommand Command = new SqlCommand(insert, conn);
                    Command.Parameters.AddWithValue("@tytul", textBox1.Text);
                    Command.Parameters.AddWithValue("@id_rodzaju", label2.Text);
                    Command.Parameters.AddWithValue("@rok_realizacji", textBox2.Text);
                    Command.Parameters.AddWithValue("@id_kierownika", label3.Text);
                    Command.ExecuteNonQuery();
0

Jeśli używasz bazy ORACLE, to użyj słowa kluczowego RETURNING w zapytaniu SQL. Wiele na ten temat znajdziesz w internecie: http://www.lattimore.id.au/2006/04/06/oracle-returning-clause/
Jeśli używasz bazy MS-SQL, to spróbuj użyć SCOPE_IDENTITY: http://www.bytemycode.com/snippets/snippet/417/
Jak jest w innych bazach, to należałoby sprawdzić. Jeśli chcesz zmienić kilka tabel, to stwórz jakąś procedurę składowaną, aby nie wysyłać kilka razu zapytań SQL.

0

przy MsSql - "INSERT INTO .... VALUES(...); SELECT @@IDENTITY" oraz na koncu nie execnonquery, a ExecuteScalar

0

Dzięki wielkie!

1 użytkowników online, w tym zalogowanych: 0, gości: 1