C # DataAdapter, DataTable -> не обновляется обратно в таблицу SQL Server - PullRequest
0 голосов
/ 17 ноября 2011

Я написал простой тест для проверки моего кода dataAdapter.Я подключаюсь к базе данных SQL Server, заполняю таблицу данных, изменяю значение в строке и вызываю da.Update(table), чтобы отправить изменения обратно на SQL Server.Таблица имеет первичный ключ.Совсем не уверен, почему это не работает ... (см. Код)

connectionToSQL = new SqlConnection(SQLConnString);
connectionToSQL.Open();

var wktbl = new DataTable();

var cmd = new SqlCommand("SELECT * FROM TAGS$",connectionToSQL);                 
var da = new SqlDataAdapter(cmd);
var b = new SqlCommandBuilder(da);
da.Fill(wktbl);

wktbl.Rows[3][2] = "5";
wktbl.AcceptChanges();

da.Update(wktbl);

Ответы [ 2 ]

4 голосов
/ 17 ноября 2011

Просто пропустите вызов на AcceptChanges , и код должен работать нормально.Он помечает все строки как неизмененные, поэтому для вызова Update ничего не остается.

0 голосов
/ 17 ноября 2011

Хорошо, я хотел бы расширить свой вопрос до моего первоначального усилия ... Я выбираю * из электронной таблицы Excel в DT. Я хочу взять эти значения и обновить таблицу SQL. (Таблица SQL существует из-за ручного импорта в SQL из исходной электронной таблицы Excel, имеет набор первичных ключей, пользователь обновляет таблицу Excel, мне нужно обновить значения SQL.) Я устанавливаю RowState для изменения в попытке вызвать обновление.

connectionToSQL = new SqlConnection (SQLConnString); connectionToSQL.Open ();

            var cmd = new SqlCommand("SELECT * FROM TAGS$",connectionToSQL);                 
            var da = new SqlDataAdapter(cmd);
            var b = new SqlCommandBuilder(da);

            //dt.Rows[3][2] = "20";

            foreach (DataRow r in dt.Rows)
            {
                r.SetModified();
            }

            da.Update(dt);
...