|
|
|
как правильно обновить запись ?
|
|||
|---|---|---|---|
|
#18+
есть sqlDataAdapter1,dataSet11, DataGrid1 добавляю запись dataSet11.Tables["таблица"].Rows.Add(new Object[] {зн поля 1,зн поля 1}); применяю изменения dataSet11.Tables["authors"].AcceptChanges(); в итоге данные не записываются в базу что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 13:04 |
|
||
|
как правильно обновить запись ?
|
|||
|---|---|---|---|
|
#18+
DataSet.Update ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 13:14 |
|
||
|
как правильно обновить запись ?
|
|||
|---|---|---|---|
|
#18+
Пошу заметить такого метода в DataSet е нет пробовал sqlDataAdapter1.Update(dataSet11,"authors") тоже не катит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 13:25 |
|
||
|
как правильно обновить запись ?
|
|||
|---|---|---|---|
|
#18+
Имелось ввиду DataAdapter.Update(DataSet) - но только сначала нужно правильно задать Insert/Update/Delete Commands in your DataAdapter... например при помощи CommandBuilder(если select был простым) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 14:16 |
|
||
|
как правильно обновить запись ?
|
|||
|---|---|---|---|
|
#18+
Кусочек MSDN Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 14:16 |
|
||
|
как правильно обновить запись ?
|
|||
|---|---|---|---|
|
#18+
А у вас, по всей видимости, нет в адаптере команды на обновление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2004, 14:18 |
|
||
|
как правильно обновить запись ?
|
|||
|---|---|---|---|
|
#18+
есть два уровня обновления 1) обновление в DataSet, выполняется методом AcceptChanges() 2) обновление из DataSet в БД , выполняется sqlDataAdapter.Update(dataSet) В отладке убедитесь что после AcceptChanges() данные изменяются в DataSet , а после sqlDataAdapter.Update(dataSet) в БД смотря при этом на sqlDataAdapter.UpdateCommand ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2004, 16:54 |
|
||
|
как правильно обновить запись ?
|
|||
|---|---|---|---|
|
#18+
А как можно без запроса сделать обновление? Ведь по всему видно, что DataSet содержит всю информацию о струкруре и наборе данных серверной БД. Почему нельзя обновить DataSet и найти способ обновления БД, при котором база данных анализирует изменения, произошедшие в таблицах датасета и принимает эти изменения на свой счет. Или проще - это делает не БД, а на клиенте - с помощью какой-нить функции (короткой) без применения параметризованных запросов и без сложной логики обновления. Просто прога видет, что данные в таблице датасет изменились и меняет их в таблице БД. Почему так нельзя сделать? Пожалуйста, объясните начинающему. До встречи, Yurfact ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2008, 14:02 |
|
||
|
как правильно обновить запись ?
|
|||
|---|---|---|---|
|
#18+
Max80А как можно без запроса сделать обновление? Ведь по всему видно, что DataSet содержит всю информацию о струкруре и наборе данных серверной БД. ну ка расскажите мне, как это датаСет видит структуру БД, если на вход подать запрос с выборкой из вьюхи? ему и дела нет до вашей БД, пока вы сами ему все не распишите и не покажите, а к тому же, еще и сами все выполнять будите ;) по вашему вопросу : либо метод Update адаптера, либо отдельный Command, да и вообще, особых проблем не вижу. Если приложение простецкое, что даже гриды представляют результат выборки одинарных таблиц, то тут адаптер-датаСет-коммандБилдер сделают свои дела на ура, если же выборки сложные, вьюхи, в которых участвует по 5-10 таблиц, то в такой ситуации запись не добавляется путем забивании данных в новой строке грида, для этих случаев создаются специализированные формочки заполнения всех необходимых данных, после выполняется Command и, затем, снова метод Fill, чтобы обновить данные в гриде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2008, 17:14 |
|
||
|
как правильно обновить запись ?
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, загнался немного. Имел ввиду DataAdapter Пробовал по Вашему совету с помощью SqlCommandBuilder: Dim _daDovObl As SqlDataAdapter Private Sub Frm_RtrNew_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load _daDovObl = DAFill(Me.DS, "DOVOBL") 'Me.DS - DataSet (на форме, но не типизирован), DOVOBL - таблица 'Здесь код по присвоения значений контролам '... End Sub ----------------------------------------------------------------------------------------------------------- 'А тепeрь присваиваем значения записям DataSet (в данном случае - из TreeView): Private Sub TV_AfterLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.NodeLabelEditEventArgs) Handles TV.AfterLabelEdit Dim tn As TreeNode = Me.TV.SelectedNode Dim dt As DataTable = PropertyNode(tn, mvPropertyTreeNodeClass.mvDataTable) Dim tit As String = PropertyNode(tn, mvPropertyTreeNodeClass.mvNameColumnTitle) Dim colId As String = PropertyNode(tn, mvPropertyTreeNodeClass.mvNameColumnId) Dim id As Integer = PropertyNode(tn, mvPropertyTreeNodeClass.mvID) Dim strRes As String = tn.Text If FindAndUpdateRow(dt, colId, id, tit, strRes) = True Then MsgBox("Yes!!!") End Sub ----------------------------------------------------------------------------------------------------------- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click UpdateDA(Me.DS, "DOVOBL", _daDovObl) End Sub ----------------------------------------------------------------------------------------------------------- Public Function DAFill(ByVal Ds As DataSet, ByVal tblName As String, Optional ByVal strSQL As String = Nothing) _ As SqlDataAdapter Dim stSQL As String If IsNothing(strSQL) Then stSQL = "SELECT * FROM " & tblName Else stSQL = strSQL End If Dim DA As New SqlDataAdapter(stSQL, OpenCnn.ConnectionString) 'Использую функцию подключения к БД (в ней храниться инфа о подключении, 'оторое может изменяться DA.FillSchema(Ds, Source, tblName) DA.Fill(Ds, tblName) Return DA End Function ----------------------------------------------------------------------------------------------------------- Public Function FindAndUpdateRow(ByVal dt As DataTable, ByVal colId As String, ByVal id As Integer, _ ByVal colTit As String, ByVal strRes As String) As Boolean Try dt.PrimaryKey = New DataColumn() {dt.Columns(colId)} Dim row As DataRow = dt.Rows.Find(id) row(colTit) = strRes row.AcceptChanges() Return True Catch ex As Exception Return False End Try End Function Но БД все равно не обнавляется. Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2008, 22:27 |
|
||
|
как правильно обновить запись ?
|
|||
|---|---|---|---|
|
#18+
А ЕЩЕ ЗАБЫЛ СКАЗАТЬ : ПОСЛЕ ОБНОВЛЕНИЕ ДАТАСЕТА ПРОВЕРИЛ - ДАННЫЕ ИЗМЕНИЛИСЯ, А ВОТ В БД ПОСЛЕ ВСЕХ ОПЕРАЦИЙ DA.UpdateCommand = Nothing Т.е. по всему видно, что что-то с апдайтом До встречи, Yurfact ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2008, 22:41 |
|
||
|
как правильно обновить запись ?
|
|||
|---|---|---|---|
|
#18+
Max80А ЕЩЕ ЗАБЫЛ СКАЗАТЬ : ПОСЛЕ ОБНОВЛЕНИЕ ДАТАСЕТА ПРОВЕРИЛ - ДАННЫЕ ИЗМЕНИЛИСЯ, А ВОТ В БД ПОСЛЕ ВСЕХ ОПЕРАЦИЙ DA.UpdateCommand = Nothing Т.е. по всему видно, что что-то с апдайтом я в VB не силен, но даже так могу сказать, что не вижу вызова метода dataAdapter.Update. вот пример из МСДНа как пользоваться билдером: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. про метод AcceptChanges(), что вы используете, можете также прочитать в МСДНе: Код: plaintext думаю, тут ясно сказано, что данные не обновляются на сервере БД, а именно в источнике данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 08:52 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=35333810&tid=1352266]: |
0ms |
get settings: |
12ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
4ms |
track hit: |
87ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 429ms |

| 0 / 0 |
