Problema al actualizar BD desde DataSet

20/04/2005 - 17:10 por trinity.9bi | Informe spam
Hola,
he estado revisando los posts del grupo y he visto un mensaje con
(creo) el mismo titulo, pero no me ha resuelto la duda.

El caso es que creo que tengo todo puesto pero no consigo que se
actualice la base de datos con los cambios del DataSet. Lo que intento
hacer es lo siguiente:
En el DataSet "datos" tengo una tabla (obtenida con un simple "Select
*"). Como el Fill del DataSet no te crea claves, le pongo yo una
clave. Y una vez especificada la clave busco un par de registros y les
cambio el contenido. Con el DataSet ya modificado intento actualizar
la BD y es cuando no me funciona.

El codigo viene a ser:
//INICIO DE CODIGO
DataColumn [] clave = new DataColumn[1];
clave[0] = datos.Tables["Talleres"].Columns["IDTaller"];
datos.Tables["Talleres"].PrimaryKey = clave;

DataRow filaCambio = datos.Tables["Talleres"].Rows.Find("175");
filaCambio["Descripción"] = "Esto es un taller";

filaCambio = datos.Tables["Talleres"].Rows.Find("176");
filaCambio["Descripción"] = "Esto es otro taller";

int retorno = adaptador.Update(datos);
txtInformacion.Text = "Numero de filas actualizadas: " + retorno;
//FIN DE CODIGO

Y claro, el valor de "retorno" es cero.
He leido por ahi que hay que rellenar el UpdateCommand del Adapter,
pero no entiendo como hay que llenarlo. Si lo lleno con una sentencia
Update, entonces me puede afectar a varias filas que no deseo, y no
tengo forma de actualizar las filas tal y como lo hago a mano en el
DataSet.

Por favor, ¿alguien que me resuelva el problema?
 

Leer las respuestas

#1 Braulio Diez
21/04/2005 - 11:03 | Informe spam
Hola,

Sobre el update command, aquí te va un ejemplo (a lo bestia :-)) de como va:

DataAdapter...
DataAdapter.UpdateCommand.CommandText "UPDATE Table1 SET "
+ "Column2 = @Column2"+ ", "
+ "Column3 = @Column3"+ " WHERE ID = @ID"

Sobre las claves en el Dataset, cuando lo cargas puedes decirle que te las
saque el sólo (creo que en el Fill, hay un flag AddWithKey o algo así)

Buena suerte
Braulio


"EAmez" escribió:

Hola,
he estado revisando los posts del grupo y he visto un mensaje con
(creo) el mismo titulo, pero no me ha resuelto la duda.

El caso es que creo que tengo todo puesto pero no consigo que se
actualice la base de datos con los cambios del DataSet. Lo que intento
hacer es lo siguiente:
En el DataSet "datos" tengo una tabla (obtenida con un simple "Select
*"). Como el Fill del DataSet no te crea claves, le pongo yo una
clave. Y una vez especificada la clave busco un par de registros y les
cambio el contenido. Con el DataSet ya modificado intento actualizar
la BD y es cuando no me funciona.

El codigo viene a ser:
//INICIO DE CODIGO
DataColumn [] clave = new DataColumn[1];
clave[0] = datos.Tables["Talleres"].Columns["IDTaller"];
datos.Tables["Talleres"].PrimaryKey = clave;

DataRow filaCambio = datos.Tables["Talleres"].Rows.Find("175");
filaCambio["Descripción"] = "Esto es un taller";

filaCambio = datos.Tables["Talleres"].Rows.Find("176");
filaCambio["Descripción"] = "Esto es otro taller";

int retorno = adaptador.Update(datos);
txtInformacion.Text = "Numero de filas actualizadas: " + retorno;
//FIN DE CODIGO

Y claro, el valor de "retorno" es cero.
He leido por ahi que hay que rellenar el UpdateCommand del Adapter,
pero no entiendo como hay que llenarlo. Si lo lleno con una sentencia
Update, entonces me puede afectar a varias filas que no deseo, y no
tengo forma de actualizar las filas tal y como lo hago a mano en el
DataSet.

Por favor, ¿alguien que me resuelva el problema?

Preguntas similares