C sharp - Problemas con SqlCommandBuilde

 
Vista:

Problemas con SqlCommandBuilde

Publicado por David Benavides (1 intervención) el 06/02/2008 23:41:53
Saludos a todos.

Estoy dando mis primeros pasos en ADO.NET con C# y tengo problemas.

El siguiente fragmento de còdigo lo encontrè en la pàgina del Guille y es parte de unp rogramita que se conecta a una BD SQL, se mueve por los registros de una tabla, y Agrega, Edita y Elimina Campos. Pero me està generando un conflicto:

// Crear los comandos de insertar, actualizar y eliminar
SqlCommandBuilder cb = new SqlCommandBuilder(da);
// Como hay campos con caracteres especiales,
// al usarlos incluirlos entre corchetes.
cb.QuotePrefix = "[";
cb.QuoteSuffix = "]";
// Asignar los comandos al DataAdapter
// (se supone que lo hace automáticamente, pero...)
da.UpdateCommand = cb.GetUpdateCommand();
da.InsertCommand = cb.GetInsertCommand();
da.DeleteCommand = cb.GetDeleteCommand();

El error que me genera es el siguiente:
"La generación SQL dinámica para UpdateCommand no es compatible con
SelectCommand, que no devuelve ninguna información sobre columnas clave."

Nò sè por què sòlo puedo agregar registros nuevos y no actualizar o eliminar filas existentes.

Sè que puedo realizar esto con un commandtext que contenga una sentencia UPDATE o DELETE, ejecutarlo y listo. Pero no quiero eso. Quiero lograrlo con el “estilo ADO”. Es decir, moverme por mi tabla con botones NEXT, LAST, etc y eliminar o actualizar la fila actual. O sea:

private void btnEliminar_Click(object sender, EventArgs e) {
// Eliminar la fila actual
if( fila < 0 || fila > dt.Rows.Count - 1 ) return;

try{
// Eliminar la fila de la tabla
dt.Rows[fila].Delete();
// Actualizar físicamente la base de datos
da.Update(dt);
// Aceptar los cambios en la copia local
dt.AcceptChanges();
}catch(DBConcurrencyException ex){
MessageBox.Show("Error de concurrencia: " + ex.Message);
}catch(Exception ex){
MessageBox.Show(ex.Message);
}

}

Agradecerè mucho su ayuda.
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder