Как составить правильные команды вставки / обновления / удаления для обновления связанных таблиц в базе данных с исходным доступом?
Я должен использовать MS Access.
У меня есть база данных с этой структурой (не обращайте внимания на странные имена - она почти не переведена для этого вопроса):
Моя программа отображает одну из этих таблиц (в WinForms). Пользователь может изменить данные в нем. Для отправки измененных данных я использую кнопку.
Здесь проблема. Если я использую OleDbCommandBuilder для генерации команд, я получаю ошибку после нажатия кнопки сохранения (если что-то было изменено в таблице).
Таким образом, если я что-то изменю в таблице выключения: DataTable "таблица" не включает DataColumn "идентификатор пациента" для этого SourceColumn "идентификатор пациента" (текст ошибки переведен, поэтому может выглядеть немного иначе).
Если я что-то изменю в таблице посещений: синтаксическая ошибка INSERT INTO. И так далее про ОБНОВЛЕНИЕ и УДАЛЕНИЕ.
Похоже, я должен составлять команды вручную. Но я не понимаю, как это сделать. MSDN пример не очень помогает.
Поэтому, пожалуйста, помогите мне составить правильные команды для таблиц "посещения" и "заболевание". Или хотя бы опишите, как его составить.
В случае, если что-то не понятно без кода моей формы:
protected string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb";
protected OleDbConnection connection = new OleDbConnection();
protected OleDbDataAdapter adapter;
protected OleDbCommandBuilder cBuilder;
DataSet dataSet;
public Form1() {
InitializeComponent();
connection.ConnectionString = conStr;
adapter = new OleDbDataAdapter("SELECT * FROM TABLE_NAME", connection);
dataSet = new DataSet();
cBuilder = new OleDbCommandBuilder(adapter);
adapter.Fill(dataSet);
connection.Open();
adapter.UpdateCommand = cBuilder.GetUpdateCommand(true);
adapter.InsertCommand = cBuilder.GetInsertCommand(true);
adapter.DeleteCommand = cBuilder.GetDeleteCommand(true);
connection.Close();
}
private void saveButton_Click(object sender, EventArgs e) {
adapter.Update(dataSet); //this method send data to database and return error
}
Угадай, код загрузки не нужен.
1 ответ
Эта идея, вероятно, ошибка. Лучше искать какую-нибудь альтернативу для MS Access.