Foros del Web » Programación para mayores de 30 ;) » .NET »

Actualizar e Insertar en SQL Server

Estas en el tema de Actualizar e Insertar en SQL Server en el foro de .NET en Foros del Web. Hola a todos! Se que muchos ya sabreis hacerlo, pero a mi me ha costado Dios y ayuda. He consiguido Insertar, pero lo que no ...
  #1 (permalink)  
Antiguo 01/03/2006, 11:39
 
Fecha de Ingreso: noviembre-2005
Mensajes: 102
Antigüedad: 18 años, 5 meses
Puntos: 0
Actualizar e Insertar en SQL Server

Hola a todos!

Se que muchos ya sabreis hacerlo, pero a mi me ha costado Dios y ayuda. He consiguido Insertar, pero lo que no logro es actualizar. Mi forma de hacerlo es la siguiente (por si alguien le sirve)

DataSet Ds = new DataSet();
DataRow FILA;
string StrConexion;
string StrComando;
StrConexion = SqlDataSource1.ConnectionString;
StrComando = "SELECT * FROM Seguridad";
SqlDataAdapter AdaptadorTabla = new SqlDataAdapter(StrComando, StrConexion);
AdaptadorTabla.Fill(Ds, "Seguridad");
FILA = Ds.Tables["Seguridad"].NewRow();
FILA["IDRoom"] = 5;
FILA["Intrusion"] = true;
Ds.Tables["Seguridad"].Rows.Add(FILA);
SqlCommandBuilder comando = new SqlCommandBuilder(AdaptadorTabla);
AdaptadorTabla.Update(Ds, "Seguridad");

¿Alguien me puede decir que debería cambiar para poder actualizar?

Esta en C#, pero si me lo decis en Visual Basic no pasa nada.

Muchas gracias!

Ah! Se me olvidaba. Cuando lo ejecuto (inserto) por primera vez, todo ok, pero cuando lo hago la segunda, me da esta excepcion "A transport-level error has occurred when sending the request to the server. (provider: Named Pipes Provider, error: 0 - No hay ningún proceso en el otro extremo de la canalización.)" Me da una ejecucion si, otra no. ¿A alguien le ha pasado?

Lo he puesto en web forms. Pero creo que es mejor aquí. Si un admin quiere que borre el otro. disculpad las molestias!
  #2 (permalink)  
Antiguo 01/03/2006, 12:56
Avatar de HookerSP  
Fecha de Ingreso: diciembre-2004
Mensajes: 983
Antigüedad: 19 años, 4 meses
Puntos: 12
Yo te pongo el codigo que uso en ASP. No se si te valdrá para algo.

set miRecSet = Server.CreateObject("ADODB.Recordset")
miRecSet.ActiveConnection = "dsn=midsn;Uid=miusuario;Pwd=mipass"
miRecSet.CursorType = 0
miRecSet.CursorLocation = 2
miRecSet.LockType = 3

elsql= "INSERT INTO nombretabla (campo1,campo2,campo3,campo4) VALUES "
elsql = elsql + "('" & var_vampo1 & "','" & var_campo2 & "','" & var_campo3 & "','" & var_campo4 &"')"

campo1 2 3 y 4 son los nombres del campo en la tabla y "var_" son las variables que tienen los valores. Naturlamente del mismo tipo y longitud.

En cuanto al error del "named pipes" (canalizaciones con nombre) me da que no tiene ndad que ver con el insert.

Vamos a ver:

los clientes sql pueden comunicar con el servidor de varias formas. Una es por TCP, otra es named pipes o se puede decir que el servidor acepte las dos cosas. Name piped se usa para mantener compatibilidad con versiones antiguas de sql.

Me da la sensación que por algun sitio estas diciendo que use name pipes y por otro le estas diciendo que no, es más, me da que el servidor no esta configurado para named pipes y el cliente si.

Lo normal es usar TCP hoy en dia.

Espero que esto te sirva para algo.
Hooker
  #3 (permalink)  
Antiguo 02/03/2006, 04:43
 
Fecha de Ingreso: noviembre-2005
Mensajes: 102
Antigüedad: 18 años, 5 meses
Puntos: 0
Ya lo he conseguido!!!

Lo primero HookerSP, muchisimas gracias por responder, aunque no he entendido muy bien (por no decir nada) lo que me has dicho. ¿Que deberá hacer para hacer la conexión? Mi webform la ejecuto desde mi propia maquina.

Lo segundo aquí os dejo el codigo por si a alguien tambien le cuesta actualizar e insertar en SQL Server:

ACTUALIZAR:

string StrConexion = SqlDataSource1.ConnectionString;
string StrComando;
SqlConnection conexion = new SqlConnection(StrConexion);
conexion.Open();
StrComando = "SELECT * FROM Seguridad";
SqlDataAdapter AdaptadorTabla = new SqlDataAdapter(StrComando, StrConexion);
DataSet ds = new DataSet();

AdaptadorTabla.Fill(ds, "Seguridad");
DataRow dr = ds.Tables["Seguridad"].Rows[0];

//Todas la columnas que queramos actualizar
dr["Intrusion"] = 0;


SqlCommandBuilder comando = new SqlCommandBuilder(AdaptadorTabla);
AdaptadorTabla.Update(ds,"Seguridad");
ds.AcceptChanges();
conexion.Close();

INSERTAR:

string StrConexion = SqlDataSource1.ConnectionString;
string StrComando;
SqlConnection conexion = new SqlConnection(StrConexion);
conexion.Open();
StrComando = "SELECT * FROM Seguridad";
SqlDataAdapter AdaptadorTabla = new SqlDataAdapter(StrComando, StrConexion);
DataSet ds = new DataSet();

AdaptadorTabla.Fill(ds, "Seguridad");
DataRow dr = ds.Tables["Seguridad"].NewTable();
dr["Intrusion"] = 0;
ds.Tables["Seguridad"].Rows.Add(dr);


SqlCommandBuilder comando = new SqlCommandBuilder(AdaptadorTabla);
AdaptadorTabla.Update(ds,"Seguridad");
ds.AcceptChanges();
conexion.Close();
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:48.