В вашем первом блоке кода вы устанавливаете SelectCommand
. Также есть InsertCommand
, UpdateCommand
и DeleteCommand
.
Эти команды также существуют для OracleDataAdapter
объектов ... Поскольку DataTable
не зависит от конечной точки, все, что вам нужно сделать, это создать OracleCommand
для вставки, установите его как OracleDataAdapter's
InsertCommand
и позвоните oracleDataAdapter.Update(dataTable)
.
Изменит это с более подробной информацией, когда я проверю их.
Хорошим примером установки InsertCommand
является здесь . Обратите внимание, что когда вы добавляете параметры в команду, последнее значение, которое вы передаете .Add( ... )
, - это имя столбца, с которым вы сопоставляете.
Поскольку вы извлекаете данные в DataTable
, но не меняете их, вам нужно изменить RowState
каждой строки на «Добавленные» перед вызовом oracleDataAdapter.Update()
. Вам нужно будет сделать что-то вроде этого:
foreach (DataRow row in dataTable.Rows) {
row.SetAdded();
}
Дайте мне знать, если вам нужно больше примеров кода ... из кода, который вы разместили, я думаю, вы в значительной степени поняли, куда я иду.
Редактировать
Когда вы создаете OracleParameters, вам нужно установить в столбце источника имя столбца в DataTable. По умолчанию это имя, возвращаемое уставом выбора, поэтому:
var op1 = new OracleParameter {
ParameterName = "StudentId",
Size = 6,
OracleDbType = OracleDbType.Int32,
Direction = System.Data.ParameterDirection.Input
SourceColumn = "StudentId" // If that's what it's called in the DataTable
};
command.Parameters.Add(op1);
Метод AcceptChanges()
используется для DataTable
, как и свойство HasErrors
(оно также существует в DataRows
и DataSets
тоже).
AcceptChanges()
только сообщает DataTable, что вы обработали обновления базы данных ... изменения фиксируются в базе данных, когда вы вызываете oracleDataAdapter.Update()
. Причина, по которой вы вызываете AcceptChanges()
, состоит в том, чтобы сбросить состояния строк ... иначе, когда вы в следующий раз обновите DataTable, вы попытаетесь добавить уже добавленные строки.
Свойство AcceptChangesDuringUpdate
на OracleDataAdapter
автоматически вызовет AcceptChanges()
как часть обновления базы данных ... Обычно я этого не делаю, потому что я привык к тестированию свойства HasErrors
и обрабатывать их перед вызовом AcceptChanges()
... однако я читаю, что AcceptChanges()
вызывается по умолчанию при обновлении сейчас. Я не знаком с подробностями того, как обрабатываются строки с ошибками, приняты изменения или нет.