SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: mararayah en Viernes 14 de Julio de 2006, 18:01

Título: Conexion Base De Datos Conc#
Publicado por: mararayah en Viernes 14 de Julio de 2006, 18:01
Hola estoy deseperada!! :scream:  en mi codigo q os muestro justa abajo me sale un a interrupcion del tipo:System.InvalidOperationException

Se q tengo q establecer un comando o algo relacionado con selectCommand pero todo lo q encuentro es con visual basic y no consigo eliminar mi error.

Agradezco vuestro tiempo :P


System.Data.DataRow nuevafila;
      
nuevafila = this.ds.Tables["DatosDestinatarios"].NewRow();
nuevafila["Nombre Apellidos"] = nombreApellidostxt.Text;
nuevafila["Telefono"] = telefonotxt.Text;
nuevafila["e-mail"] =emailtxt.Text;
ds.Tables["DatosDestinatarios"].Rows.Add(nuevafila      
String sql = "INSERT INTO DatosDestinatarios(Nombre Apellidos,Telefono,e-mail) VALUES (nombreApellidostxt.Text,telefonotxt.Text, emailtxt.Text)";
cm1.CommandText = sql;
System.Console.WriteLine(sql);
         
da.Update(ds, "DatosDestinatarios");
      
MessageBox.Show("La Base de Datos ha sido actualizada");
Título: Re: Conexion Base De Datos Conc#
Publicado por: Diodo en Viernes 14 de Julio de 2006, 18:22
Hola

¿Cual es el texto de error que te sale? PAra poder ayudarte mejor

Esta parte creo que no es necesaria

Código: Text
  1. String sql = "INSERT INTO DatosDestinatarios(Nombre Apellidos,Telefono,e-mail) VALUES (nombreApellidostxt.Text,telefonotxt.Text, emailtxt.Text)";
  2.  

No hace falta que hagas una plantilla del comando insert

Puedes usar un CommandBuilder para que se generen solas las instrucciones insert, update  y delete del dataadapter

ejemplo del msdn:

Código: Text
  1.  
  2.  
  3.    OleDbConnection myConn = new OleDbConnection(myConnection);
  4.    OleDbDataAdapter myDataAdapter = new OleDbDataAdapter();
  5.    myDataAdapter.SelectCommand = new OleDbCommand(mySelectQuery, myConn);
  6.    OleDbCommandBuilder cb = new OleDbCommandBuilder(myDataAdapter);
  7.  
  8.    myConn.Open();
  9.  
  10.    DataSet ds = new DataSet();
  11.    myDataAdapter.Fill(ds, myTableName);
  12.  
  13.    //code to modify data in DataSet here
  14.  
  15.    //Without the OleDbCommandBuilder this line would fail
  16.    myDataAdapter.Update(ds, myTableName);
  17.  
  18.  
  19.  

He puesto el adaptador OleDb pero para los demas es igual

salu2  :hola:
Título: Re: Conexion Base De Datos Conc#
Publicado por: mararayah en Lunes 17 de Julio de 2006, 11:40
Te pongo todo el codigo. La interrupccion q me da es:
System.InvalidOperationException, Update requiere que InsertCommand sea válido cuando se pasa la colección DataRow con nuevas filas

public OleDbConnection conexion = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\\servicio_mensajeria_fax\\Base de Datos\\Datos.mdb");
conexion.Open();

public System.Data.DataSet ds;
ds.Clear();
cm1 =new OleDbCommand("SELECT * FROM DatosDestinatarios", conexion);
public OleDbDataAdapter da=new OleDbDataAdapter(cm1);
da.Fill(ds, "DatosDestinatarios");

System.Data.DataRow nuevafila = this.ds.Tables["DatosDestinatarios"].NewRow();
nuevafila["Nombre Apellidos"] = nombreApellidostxt.Text;
nuevafila["Telefono"] = telefonotxt.Text;
nuevafila["e-mail"] =emailtxt.Text;

this.ds.Tables["DatosDestinatarios"].Rows.Add(nuevafila);
da.Update(ds, "DatosDestinatarios");

Ese es el error exacto q me sale gracias por tu atencion
SALUDOS
Título: Re: Conexion Base De Datos Conc#
Publicado por: hellscream en Lunes 17 de Julio de 2006, 15:17
<_<  Debes asignar la propiedad InsertCommand del DataAdapter...
Título: Re: Conexion Base De Datos Conc#
Publicado por: Diodo en Martes 18 de Julio de 2006, 11:37
Es mas simple crear un :

Código: Text
  1. OleDbCommandBuilder cb = new OleDbCommandBuilder(myDataAdapter);
  2.  

y ya te crea todos los comandos del dataadapter

salu2
Título: Re: Conexion Base De Datos Conc#
Publicado por: Tagasa en Jueves 27 de Julio de 2006, 12:09
Hola!

He porbado lo del msdn pero me da el siguiente error:

Error en la sintaxis en la instruccion INSERT INTO

dejo el codigo por si sabeis donde puede estar mi fallo

Código: Text
  1.  
  2. try
  3.    Dim cb As OleDbCommandBuilder
  4.            
  5.    cnAccess = New OleDbConnection(cadenaA)
  6.                        
  7.    DAaccess = New OleDbDataAdapter(&#34;Select * from TABLA&#34;, cnAccess)
  8.    DAaccess.Fill(DSaccess, &#34;TABLA&#34;)
  9.  
  10.    cb = New OleDbCommandBuilder(DAaccess)
  11.  
  12.    dr = DSaccess.Tables(&#34;TABLA&#34;).NewRow
  13.  
  14.    dr(0) = Me.txtOrden.Text
  15.    dr(6) = Me.txtRevision.Text
  16.  
  17.    DSaccess.Tables(&#34;TABLA&#34;).Rows.Add(dr)
  18.  
  19.    DAaccess.Update(DSaccess, &#34;TABLA&#34;)
  20.  
  21.    MessageBox.Show(&#34;Grabados los datos&#34;)
  22.  
  23. Catch ex As Exception
  24.    MessageBox.Show(ex.Message)
  25. End Try
  26.  
  27.  

Espero me puedan ayudar....

Saludossssss :hola:
Tania