Trabajaremos con una base de datos ejemplo que cree para este tutorial, la base de datos cuenta con una tabla llamada usuarios y contiene los campos cod_usuario (que es la llave primaria y es un campo auto incrementable), nombre, apellido, pais.
Ademas la base de datos cuenta con un procedimiento almacenado que utilizaremos para ingresar el registro
Descargar Base de Datos
Una vez que descargemos la base de datos la adjuntamos a nuestro SQL para continuar.
Lo primero que aremos es crear un nuevo sitio web vació as.pnet en visual estudio.
Una vez creado nuestro proyecto asp.net agregamos un webform el cual nos tiene que quedar con este diseño.
Hecho esto nos vamos al código c# de nuestro formulario web y empezamos a programar nuestro formulario.
Lo primero que aremos sera añadir estas 2 referencias que nos sirven para trabajar con base de datos sql en asp.net
using System.Data.SqlClient; using System.Data;
Ahora declararemos nuestra cadena de conexión a nivel de la clase con el fin de poder utilizarla en todos los eventos que programaremos.
//cadena de conexion la declaramos a nivel de la clase para utilizarla en todos los eventos. SqlConnection cn = new SqlConnection("Data Source = .\\SQLEXPRESS; Initial Catalog = ejemplo; Integrated Security = True");
Ahora aremos un método donde cargaremos los datos al griedview de nuestra base de datos, el código va comentado para que entiendan todo.
public void cargardatos() { //hacemos la consulta a la base de datos SqlCommand cmd = new SqlCommand("Select * from usuarios", cn); //objeto adapter para hacer el enlace y llenado del dataset SqlDataAdapter adapter = new SqlDataAdapter(); //asignamos la propiedad selectcommand al objeto command para que ejecute consulta adapter.SelectCommand = cmd; //abrimos la conexion cn.Open(); //creamos objeto dataset DataSet objdataset = new DataSet(); //llenamos el datable del dataset //el metodo fill obtiene los datos recuperados del dataadapter y los coloca dentro del dataset adapter.Fill(objdataset); //cerramos conexion cn.Close(); //enlazamos los datos al griedvied GridView1.DataSource = objdataset; GridView1.DataBind(); }
Ahora para que los datos que tenga la base de datos se carguen al momento de iniciar nuestro formulario web crearemos el método Load de nuestra webform y llamaremos al metodo que creamos anteriormente (el método Load sirve para cargar datos al momento que se inicializa el formulario)
protected void Page_Load(object sender, EventArgs e) { cargardatos(); }
Por ultimo aremos el evento click de nuestro botón para que cuando el usuario presione el botón insertar los datos se inserten en la base de datos y se muestren en el griedview, aquà es donde aremos uso del procedimiento almacenado insertar usuarios. nuevamente el código esta comentado cada linea para que comprendan.
protected void Button1_Click(object sender, EventArgs e) { //utilizamos el procedimiento alamacenado insertarusuarios SqlCommand cmd = new SqlCommand("insertarusurios", cn); //especificamos que el comando es un procedimiento almacenado cmd.CommandType = CommandType.StoredProcedure; //creamos los parametros que usaremos cmd.Parameters.Add("@nombre", SqlDbType.VarChar); cmd.Parameters.Add("@apellido", SqlDbType.VarChar); cmd.Parameters.Add("@pais", SqlDbType.VarChar); //asignamos el valor de los textbox a los parametros cmd.Parameters["@nombre"].Value = TextBox1.Text; cmd.Parameters["@apellido"].Value = TextBox2.Text; cmd.Parameters["@pais"].Value = TextBox3.Text; //abrimos conexion cn.Open(); //ejecutamos la instruccion con ExcecuteNonQuerry indicando que no retorna registros. cmd.ExecuteNonQuery(); Label1.Text = "Usuario ingresado..."; //cerramos conexion cn.Close(); //cargamos los datos nuevamente cargardatos(); //limpiamos los textbox TextBox1.Text = ""; TextBox2.Text = ""; TextBox3.Text = ""; }
Para terminar les dejo el código completo asà les tiene que quedar al final
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Data; public partial class _Default : System.Web.UI.Page { //cadena de conexion la declaramos a nivel de la clase para utilizarla en todos los eventos SqlConnection cn = new SqlConnection("Data Source = .\\SQLEXPRESS; Initial Catalog = ejemplo; Integrated Security = True"); public void cargardatos() { //hacemos la consulta a la base de datos SqlCommand cmd = new SqlCommand("Select * from usuarios", cn); //objeto adapter para hacer el enlace y llenado del dataset SqlDataAdapter adapter = new SqlDataAdapter(); //asignamos la propiedad selectcommand al objeto command para que ejecute consulta adapter.SelectCommand = cmd; //abrimos la conexion cn.Open(); //creamos objeto dataset DataSet objdataset = new DataSet(); //llenamos el datable del dataset //el metodo fill obtiene los datos recuperados del dataadapter y los coloca dentro del dataset adapter.Fill(objdataset); //cerramos conexion cn.Close(); //enlazamos los datos al griedvied GridView1.DataSource = objdataset; GridView1.DataBind(); } protected void Page_Load(object sender, EventArgs e) { cargardatos(); } protected void Button1_Click(object sender, EventArgs e) { //utilizamos el procedimiento alamacenado insertarusuarios SqlCommand cmd = new SqlCommand("insertarusurios", cn); //especificamos que el comando es un procedimiento almacenado cmd.CommandType = CommandType.StoredProcedure; //creamos los parametros que usaremos cmd.Parameters.Add("@nombre", SqlDbType.VarChar); cmd.Parameters.Add("@apellido", SqlDbType.VarChar); cmd.Parameters.Add("@pais", SqlDbType.VarChar); //asignamos el valor de los textbox a los parametros cmd.Parameters["@nombre"].Value = TextBox1.Text; cmd.Parameters["@apellido"].Value = TextBox2.Text; cmd.Parameters["@pais"].Value = TextBox3.Text; //abrimos conexion cn.Open(); //ejecutamos la instruccion con ExcecuteNonQuerry indicando que no retorna registros. cmd.ExecuteNonQuery(); Label1.Text = "Usuario ingresado..."; //cerramos conexion cn.Close(); //cargamos los datos nuevamente cargardatos(); //limpiamos los textbox TextBox1.Text = ""; TextBox2.Text = ""; TextBox3.Text = ""; } }
Capturas de la aplicación corriendo
Les dejo el proyecto de la aplicación también para que lo descarguen y lo prueben con visual estudio
Descargar Proyecto
Saludos desde El Salvador...
Si quieren donarme para una soda lo pueden hacer aqui.
20 Comentarios
Saludos... mira soy totalmente nuevo en esto del desarrollo de aplicaciones en ASP.NET y no me quedo muy claro lo que mencionas acerca de que una vez que descarguemos la BD - la adjuntamos a nuestro SQL para continuar-. Como hago esto te agradeceria bastante pudieras apoyarme con eso...
ResponderEliminarCon adjuntarla me refiero es que la agregues desde el magnament estudio de sql server la agregues desde el explorador de objetos ahi te aparece la opcion de adjuntar para que la bd se pueda usar
Eliminarah y respecto a procedimientos almacenados que guia me recomiendas para iniciarme en ese arte, se que son procedimientos que estan dentro de la base de datos que realizan consultas dentro de la misma pero que funcionan para practicamente casi cualquier lenguaje de programacion, pero pues no se como crearlos. gracias campeon!! :D
ResponderEliminarPues acabo de crear un articulo sobre como hacerlo dale una leÃda y cualquier duda preguntas.
EliminarComo crear Procedimientos Almacenados en Sql Server
Hola Cristian,
ResponderEliminarMil gracias por este post, muy bueno y me fué muy util, gracias por el tiempo dedicaco a compartir tu conocimiento.
Suerte...
De nada, y pues me alegro que te allá servido ya que ese es el fin de todos mis artÃculos este fue uno de los primeros que publique por eso podes ver que hice uso de Dataset lo cual no lo recomiendo es mejor usar datatable o datareader o mejor aun clases entidad pero que bueno que te sirvió.
EliminarSaludos.
podrias publicar para formularios simples, es decir no aplicaciones web sino de escritorio (desktop)
ResponderEliminarHola amigo en el blog tengo bastantes ejemplos de aplicaciones windows tambien.
EliminarSaludos.
PodrÃas explicarme como capturar un campo fecha desde un TextBox, tengo mi webforms pero cuando hago el insert me da error String was not recognized as a valid DateTime.
ResponderEliminarEn la pagina.aspx.cs lo tengo asi
cmd.Parameters.Add("@fecha", SqlDbType.DateTime);
y luego
cmd.Parameters.Add["@fecha"] = DateTime.ParseExact("TextBox4.Text","dd/mm/yyy",null); //aqui me da error
Porque no usas el calendar de ajax para capturar la fecha.
EliminarCalendar Demonstration
Como veras es mas practico para el usuario solo seleccionar la fecha y entonces para hacer el insert solo arias.
cmd.Parameters.Add("@fecha", Convert.ToDateTime(txtFechaNacimiento.Text));
Saludos.
Gracias Cristian,
EliminarDefinitivamente es mucho mejor de la manera que tu me sugeriste y ademas es mas facil para el usuario.
Saludos cordiales,
Asà es amigo siempre tenes que buscar facilitarles la informacion a los usuarios.
EliminarSaludos.
//utilizamos el procedimiento alamacenado insertarusuarios
ResponderEliminarno entiendo esta parte de donde sacas este procedimiento o como se hace?
Hola Laura.
EliminarEs un procedimiento almacenado creado en la base de datos para insertar un registro. Si no quieres usar procedimientos almacenados arias la query a la bd para hacer el insert.
Aqui explico como crear procedimientos almacenados en sql server.
Como crear Procedimientos Almacenados en Sql Server
Saludos.
hola buenisimo el tutorial pero tengo un problema con la conexion, me tira un error en la parte en qe abre la conexion, quisas es por la cadena de conexion, o no se, me podrias ayudar con eso? saludos
ResponderEliminarHola Rolando cual es la cadena de conexión que estas usando?
ResponderEliminar("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:/Users/Rola/Documents/Visual Studio 2010/WebSites/WebSite1/App_Data/Database.mdf;Integrated Security=True;User Instance=True")
ResponderEliminaresa cadena de conexion tengo, el error me lo tira en cn.Open()
Tienes mal la cadena de conexión la pleca tiene que ser asi /.
ResponderEliminarPor la ruta que has puesto me imagino que la base de datos esta en la misma carpeta del proyecto, prueba asi.
@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
Saludos.
Hola Cristian
ResponderEliminarme podrÃas especificar como hacer la parte donde mandas llamar el procedimiento alamacenado insertarusuarios, pero utilizando la query a la bd para hacer el insert. porfis es que soy nuevo en esto.......
Hola.
ResponderEliminarAqui en este articulo hago un insert a la bd usando la query directamente.
Comprobar si Existe Registro en BD C# - VB.Net
Analiza el metodo Insert().
Saludos.