2013-06-06 3 views
0

У меня есть программа для редактирования базы данных и вам нужно дать пользователям возможность редактировать определения существующих запросов. Изменения, как представляется, применяются к DataTable соответствующим образом, но они фактически не сохраняются.Обновления для datatable не сохраняются

' schemaTable will be set to one of the following values before calling this method 
schemaTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Views, Nothing) 
or 
schemaTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Procedures, Nothing) 

Public Sub UpdateQueryDefinition(ByRef schemaTable As DataTable, _ 
           ByRef SQL As String, _ 
           ByVal QName As String, _ 
           ByVal View As Boolean) 

Dim existingqueryname As String 
Dim existingquerydefinition As String 
Dim qrydefinitionindex As Integer 

For each row As DataRow In schemaTable.Rows 

    existingqueryname = row.ItemArray(2).ToString.ToUpper 
    If View Then 
     ' Column index for query definition is 3 for Views 
     qrydefinitionindex = 3 
    Else 
     ' Not a view, then we're a procedure. The Definition is column index 4 
     qrydefinitionindex = 4 
    End If 
    existingquerydefinition = row.ItemArray(qrydefinitionindex).ToString.ToUpper 

    ' See if the current query in schemaTable is the query we want to modify 
    If existingqueryname = QName.ToUpper Then 

     SQL = ' User input retrieved and set here 

     ' Set query definition in schemaTable = to user input of new query 
     row.Item(qrydefinitionindex) = SQL 
     row.AcceptChanges() 

' At this point, if you reference row.Item(qrydefinitionindex) it will indeed = SQL 
' but the query is not actually modified in the .mdb 

     Exit For 
    End If 

    Next 

End Sub 

Я чем-то пропускаю? Почему изменения не отражаются в базе данных?

ответ

2

DataTable - это отключенный объект, независимо от подключения к базе данных. Независимо от того, какие изменения вы сделаете с ним, оставайтесь только в памяти. Вам нужно написать дополнительную логику для записи данных обратно в базу данных.

+0

Спасибо, надо любить пропустить что-то простое =). – j0nnyques7

Смежные вопросы