Обновите базу данных, используя SqlCeDataAdaptor - PullRequest
0 голосов
/ 02 февраля 2011

Я заполняю список из набора данных, который обращается к sqlserver в Visual Studio 2008 Express Edition. Я пытался обновить просмотр списка и базу данных одновременно.

SettingTxt.Text ссылается на текстовое поле

С помощью следующего кода я смог обновить представление списка с помощью информации, введенной в текстовое поле, но такое же обновление не выполняется в базе данных. Если кто-то может помочь мне решить эту проблему, я был бы очень признателен. Я знаю, что в Интернете существует множество форумов, посвященных именно этой проблеме, но я не могу заставить ее работать.

thisConnection = new SqlCeConnection("Data Source=AugMedDB.sdf;Password=");
thisConnection.Open();
SqlCeCommand cmd = thisConnection.CreateCommand();
cmd.CommandText = "UPDATE Patient SET Setting = \'" + SettingTxt.Text + "\' WHERE (PtID=0) AND (EquipID=1) AND (Control='Lever')" ;

SqlCeDataAdapter adp = new SqlCeDataAdapter();
adp.UpdateCommand = cmd;
dataSet.Tables[0].Rows[0][2] = SettingTxt.Text;
adp.Update(dataSet);

Заранее спасибо.


Перемещено из ответа:

Что у меня сейчас есть:

SqlCeCommand cmd = thisConnection.CreateCommand();
cmd.CommandText = "SELECT column FROM table WHERE id=0";
SqlCeDataAdapter adp = new SqlCeDataAdapter(cmd);
adp.SelectCommand = cmd;

DataSet ds = new DataSet();
ds = dataS.getDataSet();
adp.Fill(ds, "Patient");

SqlCeCommand comm = thisConnection.CreateCommand();
comm.CommandText = "UPDATE table SET Setting = 'value' WHERE (PtID=0)";
adp.UpdateCommand = comm;
adp.Update(ds, "Patient");

И я не понимаю все учебники, которые я нахожу. Заранее спасибо.

Обновление:

Тем не менее, даже такая простая вещь не обновляет базу данных:

SqlCeConnection thisConn = new SqlCeConnection("Data Source=AugMedDB.sdf;Password=");
String query = "UPDATE Patient SET Setting = 'TopyTruck' WHERE (PtID=0) AND (EquipID=1) AND (Control='Lever')";
thisConn.Open();
SqlCeCommand commd = new SqlCeCommand(query, thisConn);
commd.ExecuteNonQuery();
thisConn.Close();

Ответы [ 2 ]

1 голос
/ 02 февраля 2011

Ваш оператор UPDATE не подходит для Adapter.Update (), для этого ему нужны параметры и он должен быть выровнен с оператором SELECT.

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


Обновление

После заполнения набора данных

  • сгенерирует другие операторы SQL с помощью CommandBuilder (я думаю, что он существует для SqlCe)
  • или используйте собственную команду обновления без адаптер.Просто позвоните comm.ExecuteNonQuery()

Совет 1. Это может помочь создать временный (WinForms) проект и использовать инструменты VS для «Добавить источник данных».В конструкторе наборов данных вы можете посмотреть, как VS генерирует команды и т. Д.

Совет 2: Существуют и другие доступные опции, например, структура сущностей.Наборы данных (становятся) технология "конца жизни".

0 голосов
/ 04 февраля 2011

Большое спасибо за вашу помощь.Я на самом деле нашел источник проблемы.У меня было несколько ссылок на базу данных;один в моем проекте и другой экземпляр в bin / debug.Я корректно обновлял копию в bin / debug, но я искал копию в моем проекте.Как только я удалил все копии, кроме той, что в bin / debug, все это заработало и имело смыслТеперь я вижу обновления в базе данных в bin / debug /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...