Error al añadri registro en access

14/10/2004 - 13:40 por berto | Informe spam
Hola a todos :)

Estoy haciendo mis primeras pruebas con ADO.NET. He creado en access una
tabla como esta

TAreas
Nombre [texto]
Color [entero]

Intento añadir un registro desde C# con este codigo:


string connstr = "provider=Microsoft.JET.OLEDB.4.0; " +
"data source = E:\\Trabajo\\EnDesarrollo\\LCHArena\\DB\\Test.mdb";
string commstr = "SELECT * FROM TAreas";

// Generar DataSet con tabla TAreas
OleDbDataAdapter adapter = new OleDbDataAdapter(commstr,connstr);
DataSet dset = new DataSet();
adapter.Fill(dset,"TAreas");

DataRow dr = dset.Tables[0].NewRow();
dr["Nombre"] = "Color1";
dr["Color"] = 1;
dset.Tables[0].Rows.Add(dr);
adapter.Update(dset,"TAreas");

y obtengo una excepcion con el siguiente mensaje:

Excepción no controlada del tipo 'System.InvalidOperationException' en
system.data.dll

Información adicional: Update requiere que InsertCommand sea válido
cuando se pasa la colección DataRow con nuevas filas.

He estado leyendo un libro de ADO.NET y parece que lo que hago es
correcto. Me podeis dar una pista?

Muchas gracias ;)

Preguntas similare

Leer las respuestas

#1 Cesarion
14/10/2004 - 14:13 | Informe spam
Bueno, loq eu sucede es que no has definido la propiedad insert command del
DataAdapter, esta propiedad le indica al DataAdapter que instrucción debe
utilizar el adaptador para insertar los nuevos registros en la base de datos

Cesarion From Colombia

"berto" wrote:

Hola a todos :)

Estoy haciendo mis primeras pruebas con ADO.NET. He creado en access una
tabla como esta

TAreas
Nombre [texto]
Color [entero]

Intento añadir un registro desde C# con este codigo:


string connstr = "provider=Microsoft.JET.OLEDB.4.0; " +
"data source = E:\\Trabajo\\EnDesarrollo\\LCHArena\\DB\\Test.mdb";
string commstr = "SELECT * FROM TAreas";

// Generar DataSet con tabla TAreas
OleDbDataAdapter adapter = new OleDbDataAdapter(commstr,connstr);
DataSet dset = new DataSet();
adapter.Fill(dset,"TAreas");

DataRow dr = dset.Tables[0].NewRow();
dr["Nombre"] = "Color1";
dr["Color"] = 1;
dset.Tables[0].Rows.Add(dr);
adapter.Update(dset,"TAreas");

y obtengo una excepcion con el siguiente mensaje:

Excepción no controlada del tipo 'System.InvalidOperationException' en
system.data.dll

Información adicional: Update requiere que InsertCommand sea válido
cuando se pasa la colección DataRow con nuevas filas.

He estado leyendo un libro de ADO.NET y parece que lo que hago es
correcto. Me podeis dar una pista?

Muchas gracias ;)

Respuesta Responder a este mensaje
#2 berto
14/10/2004 - 21:58 | Informe spam
Gracias Cesarion.

La verdad es que estoy un poco perdido. En el libro que tengo no especifica
nada mas del codigo que he puesto.

Puedes decirme que debo añadir para definir esa propiedad del DataAdapter?

De nuevo, muchas gracias por tu ayuda :)

"Cesarion" escribió en el mensaje
news:
Bueno, loq eu sucede es que no has definido la propiedad insert command
del
DataAdapter, esta propiedad le indica al DataAdapter que instrucción
debe
utilizar el adaptador para insertar los nuevos registros en la base de
datos

Cesarion From Colombia

"berto" wrote:

Hola a todos :)

Estoy haciendo mis primeras pruebas con ADO.NET. He creado en access una
tabla como esta

TAreas
Nombre [texto]
Color [entero]

Intento añadir un registro desde C# con este codigo:


string connstr = "provider=Microsoft.JET.OLEDB.4.0; " +
"data source = E:\\Trabajo\\EnDesarrollo\\LCHArena\\DB\\Test.mdb";
string commstr = "SELECT * FROM TAreas";

// Generar DataSet con tabla TAreas
OleDbDataAdapter adapter = new OleDbDataAdapter(commstr,connstr);
DataSet dset = new DataSet();
adapter.Fill(dset,"TAreas");

DataRow dr = dset.Tables[0].NewRow();
dr["Nombre"] = "Color1";
dr["Color"] = 1;
dset.Tables[0].Rows.Add(dr);
adapter.Update(dset,"TAreas");

y obtengo una excepcion con el siguiente mensaje:

Excepción no controlada del tipo 'System.InvalidOperationException' en
system.data.dll

Información adicional: Update requiere que InsertCommand sea válido
cuando se pasa la colección DataRow con nuevas filas.

He estado leyendo un libro de ADO.NET y parece que lo que hago es
correcto. Me podeis dar una pista?

Muchas gracias ;)

Respuesta Responder a este mensaje
#3 berto
15/10/2004 - 08:41 | Informe spam
berto wrote:
Gracias Cesarion.

La verdad es que estoy un poco perdido. En el libro que tengo no especifica
nada mas del codigo que he puesto.

Puedes decirme que debo añadir para definir esa propiedad del DataAdapter?

De nuevo, muchas gracias por tu ayuda :)

"Cesarion" escribió en el mensaje
news:

Bueno, loq eu sucede es que no has definido la propiedad insert command
del
DataAdapter, esta propiedad le indica al DataAdapter que instrucción
debe
utilizar el adaptador para insertar los nuevos registros en la base de
datos

Cesarion From Colombia

"berto" wrote:


Hola a todos :)

Estoy haciendo mis primeras pruebas con ADO.NET. He creado en access una
tabla como esta

TAreas
Nombre [texto]
Color [entero]

Intento añadir un registro desde C# con este codigo:


string connstr = "provider=Microsoft.JET.OLEDB.4.0; " +
"data source = E:\\Trabajo\\EnDesarrollo\\LCHArena\\DB\\Test.mdb";
string commstr = "SELECT * FROM TAreas";

// Generar DataSet con tabla TAreas
OleDbDataAdapter adapter = new OleDbDataAdapter(commstr,connstr);
DataSet dset = new DataSet();
adapter.Fill(dset,"TAreas");

DataRow dr = dset.Tables[0].NewRow();
dr["Nombre"] = "Color1";
dr["Color"] = 1;
dset.Tables[0].Rows.Add(dr);
adapter.Update(dset,"TAreas");

y obtengo una excepcion con el siguiente mensaje:

Excepción no controlada del tipo 'System.InvalidOperationException' en
system.data.dll

Información adicional: Update requiere que InsertCommand sea válido
cuando se pasa la colección DataRow con nuevas filas.

He estado leyendo un libro de ADO.NET y parece que lo que hago es
correcto. Me podeis dar una pista?

Muchas gracias ;)











OK. Ya lo tengo. Tienes que usar un objeto OleDbCommandBuilder para
generar automaticamente los comandos de insercion (o algo asi).
Para el que le interese el codigo queda asi

string connstr = "provider=Microsoft.JET.OLEDB.4.0; " + "data source =
E:\\Trabajo\\EnDesarrollo\\LCHArena\\DB\\Test.mdb";
string commstr = "SELECT * FROM TAreas";

// Generar DataSet con tabla TAreas
OleDbDataAdapter adapter = new OleDbDataAdapter(commstr,connstr);
DataSet dset = new DataSet();
adapter.Fill(dset,"TAreas");

DataRow dr = dset.Tables[0].NewRow();
dr["Nombre"] = "Color1";
dr["Color"] = 1;
dset.Tables[0].Rows.Add(dr);
//Generar un objeto OleCommandBuilder
OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
adapter.Update(dset,"TAreas");

Me parece poco intuitivo, pero bueno.
Gracias de nuevo :)
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida