Foros del Web » Programando para Internet » ASPX (.net) »

Actualizar e Insertar en SQL Server

Estas en el tema de Actualizar e Insertar en SQL Server en el foro de ASPX (.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, 05:04
 
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?
  #2 (permalink)  
Antiguo 02/03/2006, 03:12
 
Fecha de Ingreso: mayo-2005
Mensajes: 122
Antigüedad: 19 años
Puntos: 0
Prueba esto ...

Pero porque no hace una sentencia con un Update y ya está, por ejemplo:
UPDATE <TABLA> SET <CAMPO1> = 'VALOR1',<CAMPO2>='VALOR2' etc ....

Dime algo ...
  #3 (permalink)  
Antiguo 02/03/2006, 11:01
 
Fecha de Ingreso: noviembre-2005
Mensajes: 102
Antigüedad: 18 años, 5 meses
Puntos: 0
Ya esta solucionado!!!

Jmcc, garcias por responder. Primero decirte que lo probe de mil maneras usando la sentencia que tu propones y nada. Por tanto use esta forma:

(Repeti el hilo en el otro subforo, porque me parecia mas adecuado)

http://www.forosdelweb.com/f29/actualizar-e-insertar-sql-server-374926/

Gracias!
  #4 (permalink)  
Antiguo 02/03/2006, 12:39
 
Fecha de Ingreso: febrero-2006
Mensajes: 15
Antigüedad: 18 años, 2 meses
Puntos: 0
Holaaaa!!!
Yo la verdad inserto y actualizo llamando a procedimientos almacenados de Sql, es decir, la sentencia Insert o Update las tengo en los procedimientos y lo que paso son los parámetros con los tipos de datos. La llamada al procedimiento almacenado la realizo a través de de un command.
Si no sabes cómo hacerlo dime para pasarte un ejemplo de lo que tengo hecho, del procedimiento almacenado y de cómo lo llamo...
chao
  #5 (permalink)  
Antiguo 02/03/2006, 13:23
 
Fecha de Ingreso: febrero-2006
Mensajes: 15
Antigüedad: 18 años, 2 meses
Puntos: 0
Hola!!!
Bueno aqui te mando un ejemplo de cómo hago yo para actualizar algunos campos de una tabla de una base de datos. Como te dije lo hago a través de procedimientos almacenados. Este caso es de actualizar, pero para insertar es prácticamente lo mismo, sólo cambia el procedimiento de SQL. Lo primero que te pongo es el procedimiento almacenado. En este caso la tabla se llama Reporte y los campos se llaman igual a los parámetros


CREATE PROCEDURE strInsert_Solucion
(
@id_reporte int,
@solucion nvarchar(500),
@fecha_est datetime,
@id_estado int

)
AS

SET NOCOUNT OFF;
UPDATE Reporte SET solucion=@solucion, fecha_est=@fecha_est, id_estado=@id_estado
WHERE (id_reporte=@id_reporte);
GO

A continuación te pongo un ejemplo de cómo lo llamo:


string strConn = "..... " ;//( la cadena de conexión que utilizas normalmente)

SqlConnection conn = new SqlConnection(strConn);
string strSolucion= "[strInsert_Solucion]"; (nombre del procedimiento)

SqlCommand cmmSolucion = new SqlCommand(strSolucion, conn);
cmmSolucion.CommandType = CommandType.StoredProcedure;

/* A continuación agregar los parámetros. Es importante que los nombres de los parámetros, el orden y los tipos de datos sean exactamente igual a cómo los tienes en el proc almacenado*/

SqlParameter myParm = cmmSolucion.Parameters.Add("@id_reporte", System.Data.SqlDbType.Int, 4);
myParm.Direction= ParameterDirection.Input;// parametro de entrada
myParm.Value = Convert.ToInt32(txtCodReport.Text); //el valor lo tomo de un textbox

//2do parametro
myParm = cmmSolucion.Parameters.Add("@solucion", System.Data.SqlDbType.NVarChar, 500);
myParm.Direction= ParameterDirection.Input;
myParm.Value = txtSolucion.Text;

//3er parametro
myParm = cmmSolucion.Parameters.Add("@fecha_est", System.Data.SqlDbType.DateTime, 8);
myParm.Direction= ParameterDirection.Input;
myParm.Value = DateTime.Now;

//4to parametro
myParm = cmmSolucion.Parameters.Add("@id_estado", System.Data.SqlDbType.Int, 4);
myParm.Direction= ParameterDirection.Input;
myParm.Value = 2;

conn.Open();
cmmSolucion.ExecuteNonQuery();
conn.Close();


Otra forma de llamar al procedimiento almacenado es con un command text, y aunque a mi no me gusta, es hasta más fácil porque te quitas el problema de los tipos de datos de los parámetros, pero no sé si puedan entrar en contradicción con los tipos de datos del SQL. Aqui va el ejemplo:

string connectionString = "… " ;
System.Data.SqlClient.SqlConnection connection = new
System.Data.SqlClient.SqlConnection(connectionStri ng);
connection.Open( );
System.Data.SqlClient.SqlCommand command = new
System.Data.SqlClient.SqlCommand( );
command.Connection = connection;
command.CommandType = CommandType.Text;

/* Notar que lo primero es el nombre del procedimiento, y a continuación se va concatenando el valor de los parámetros (en caso necesario hacer las conversiones de tipo correspondientes, para que coincida con los tipos de datos que espera el procedimiento almacenado de SQL) */

command.CommandText= " strInsert_Solucion " + txtCodReport.Text + ", " + txtSolucion.Text + ", " + DateTime.Now + ", " + 2;

SqlDataAdapter dataAdapter = new SqlDataAdapter( );

dataAdapter.SelectCommand = command; // Aqui prueba si es con SelectCommand o con el UpdateCommand del dataAdapter

DataSet dataSet = new DataSet( );
dataAdapter.Fill(dataSet);
connection.Close( );


Bueno espero que te sirva. A mi me funciona bien.
chaitooooo
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 18:35.