Я должен использовать 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
}
Думаю, загрузочный код не нужен.
adapter.UpdateCommand
,adapter.InsertCommand
иadapter.DeleteCommand
. Я думал, что без этого кода что-то может быть неясным. - person InfernumDeus   schedule 07.07.2015