Отлов конкретного исключения при вставке данных в базу данных acces - PullRequest
1 голос
/ 17 февраля 2012

Я вставляю данные в базу данных доступа, и если данные уже присутствуют, то есть найдена повторяющаяся запись, просто нужно обновить эту запись.

 public bool InsertInToTooltip()
        {
            InitializeSettingsDatabase();
            OleDbCommand command;
            command = new OleDbCommand(//Query, settingsDbConn);
            try
            {
                command.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                UpdateTable();
            }
            CloseDatabase();
            return true;
        }

Существует ли какое-либо конкретное исключение, возникающее при вставке повторяющихся записей в базу данных acces?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2012

Попробуйте использовать DataAdapter, если вы используете элементы управления, такие как DataGridViews, ComboBoxes и т. Д. Это автоматически выполнит всю обработку за вас, если вы свяжете его с источником и элементом управления базы данных.В противном случае я бы предпочел сделать дополнительный SQL-оператор, который проверит, доступны ли данные в базе данных, например,

SELECT * FROM TABLE WHERE COLUMN = _VAR

. На основании того, что он возвращает, вы можете либо вставить, либо обновить.Надеюсь, это поможет.

0 голосов
/ 17 февраля 2012

Вы должны проверить, существует ли запись и выпустить ли вставку или обновление, а не использовать исключение для этого. Вы можете заключить эту логику в хранимую процедуру или выполнить дополнительный запрос.

Все в одном

IF EXIST (select true from table where id = @id)
    Update table set x = y
 Else
    Insert into table (x, y) values ('x', 'y')
...