Все будет ОК, если вы измените исходный код следующим образом:
if ((cin >> name).get() && std::getline(cin, state))
Вы открываете себе SQL-инъекцию, напрямую принимая ввод пользователя, хотя это побочный вопрос. Почему вы вызываете objSqlDataAdapter.Update(objDataTable);
в этом разделе?
Хотя все остальное выглядит нормально, я бы попробовал 2 вещи:
objSqlDataAdapter.Update(objDataTable);
- ничего не было изменено , так что обновляется? На данный момент вы должны выбирать только данные. Это также изменяет таблицу, когда она обновляется, и таблица действует как источник данных BindingSource. Итак, измените это:
SqlDataAdapter objSqlDataAdapter = new SqlDataAdapter("select * from LIBRARYBOOKDETAILS where Title = '"+txtTitle.Text+"'", objSqlConnection);
К этому:
SqlCommand command = new SqlCommand("select * from LIBRARYBOOKDETAILS where Title = @Title", objSqlConnection);
command.Parameters.AddWithValue("@Title", txtTitle.Text);
SqlDataAdapter objSqlDataAdapter = new SqlDataAdapter(command);