написал небольшое приложение на 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Подскажите как исправить код, чтобы исключить эту ошибку вообще.


