написал небольшое приложение на c#, данные хранятся в MS Access.
Форма добавления записи в БД. Добавляется запись в основную таблицу, потом выполняется запрос на поиск id только что добавленной записи, а дальше зная id добавляются данные в связанную таблицу.
int idAddedSubscrib = 0; OleDbConnection connect = new OleDbConnection(data.connection.ConnectionString); OleDbCommand cmd = new OleDbCommand( "INSERT INTO subscrib ([surname], [name], [fathername], [phone], [post], [street], [house], [flat], [note]) " + "Values (@surname, @name, @fathername, @phone, @post, @street, @house, @flat, @note)", connect); cmd.Parameters.AddWithValue("surname", SurnameTextBox.Text); cmd.Parameters.AddWithValue("name", NameTextBox.Text); cmd.Parameters.AddWithValue("fathername", FathernameTextBox.Text); cmd.Parameters.AddWithValue("phone", !string.IsNullOrEmpty(PhoneTextBox.Text) ? PhoneTextBox.Text : string.Empty); cmd.Parameters.AddWithValue("post", PostComboBox.SelectedItem); cmd.Parameters.AddWithValue("street", StreetTextBox.Text); cmd.Parameters.AddWithValue("house", HouseTextBox.Text); cmd.Parameters.AddWithValue("flat", !string.IsNullOrEmpty(FlatTextBox.Text) ? FlatTextBox.Text : string.Empty); cmd.Parameters.AddWithValue("note", !string.IsNullOrEmpty(NoteTextBox.Text) ? NoteTextBox.Text : string.Empty); try { // add new subscriber connect.Open(); cmd.ExecuteNonQuery(); } catch (Exception err) { MessageBox.Show(err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { #region find id of new subscriber cmd.Dispose(); cmd = new OleDbCommand("SELECT [id] " + " FROM subscrib WHERE " + "[surname] like ? and " + "[name] like ? and " + "[fathername] like ? and " + "[phone] like ? and " + "[post] like ? and " + "[street] like ? and " + "[house] like ? and " + "[flat] like ? and " + "[note] like ? "); OleDbDataAdapter adapter = new OleDbDataAdapter(cmd.CommandText, connect); adapter.SelectCommand.Parameters.AddWithValue("surname", SurnameTextBox.Text); adapter.SelectCommand.Parameters.AddWithValue("name", NameTextBox.Text); adapter.SelectCommand.Parameters.AddWithValue("fathername", FathernameTextBox.Text); adapter.SelectCommand.Parameters.AddWithValue("phone", !string.IsNullOrEmpty(PhoneTextBox.Text)? PhoneTextBox.Text : string.Empty); adapter.SelectCommand.Parameters.AddWithValue("post", PostComboBox.SelectedItem); adapter.SelectCommand.Parameters.AddWithValue("street", StreetTextBox.Text); adapter.SelectCommand.Parameters.AddWithValue("house", HouseTextBox.Text); adapter.SelectCommand.Parameters.AddWithValue("flat",!string.IsNullOrEmpty(FlatTextBox.Text)? FlatTextBox.Text: string.Empty); adapter.SelectCommand.Parameters.AddWithValue("note",!string.IsNullOrEmpty(NoteTextBox.Text)? NoteTextBox.Text: string.Empty); adapter.Fill(table); #endregion } #region get value id new subscriber if (table.Rows.Count > 0) { idAddedSubscrib = Convert.ToInt32(table.Rows[0][0].ToString()); } else { MessageBox.Show("Неизвестная ошибка. Повторите ввод подписчика", "Cant find subscrib id", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } #endregion
Подскажите как исправить код, чтобы исключить эту ошибку вообще.