UNIDAD 5: INTRODUCION A LAS BASES DE DATOS

TEMA 8: INSERCION O ADICION DE REGISTROS J#

Insertar o agregar registros o renglones nuevos a una tabla en disco, es un proceso sencillo que usa la siguiente instruccion sql:

INSERT INTO TABLA(CAMPO1,CAMPO2..) VALUES(VALOR1,VALOR2..);

Recordar que solo se esta usando lo minimo de cada instruccion sql, es conveniente estudiar un tutorial de sql.

Prog27.aspx

<%@ PAGE LANGUAGE=VJ# %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<FORM RUNAT=SERVER>
CLAVE<ASP:TEXTBOX ID=CLAVE SIZE=3 RUNAT=SERVER/>
NOMBRE<ASP:TEXTBOX ID=NOMBRE SIZE=10 RUNAT=SERVER/>
EDAD<ASP:TEXTBOX ID=EDAD SIZE=3 RUNAT=SERVER/>
<ASP:BUTTON ONCLICK=INSERTAR TEXT=INSERTAR RUNAT=SERVER /><BR>
<ASP:DATAGRID ID=TABLAGRID RUNAT=SERVER
Width=400
BackColor=#ccccff
BorderColor=black
ShowFooter=false
CellPadding=3
CellSpacing=0
Font-Name=Verdana
Font-Size=8pt
HeaderStyle-BackColor=#aaaadd
EnableViewState=false />
</FORM>
<script runat=server>
// creando y cargando coneccion, adpater, dataset como variables globales
OleDbConnection coneccion;
DataSet tabla;
OleDbDataAdapter canal;
void Page_Load(Object sender, EventArgs e)
{
coneccion=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\progfacil\\lauro\\mibase.mdb");
canal=new OleDbDataAdapter("select * from mitabla", coneccion);
tabla= new DataSet();
canal.Fill(tabla, "mitabla");
TABLAGRID.set_DataSource(tabla);
TABLAGRID.set_DataMember("mitabla");
TABLAGRID.DataBind();
//cargando el textbox con la nueva clave clave correpondiente
// leyendo la primera columna(0) del ultimo renglon del dataset
int cren=tabla.get_Tables().get_Item("mitabla").get_Rows().get_Count();
int nvaclave=Convert.ToInt32(tabla.get_Tables().get_Item("mitabla").get_Rows().get_Item(cren-1).get_Item(0));
nvaclave= nvaclave + 1;
CLAVE.set_Text(Convert.ToString(nvaclave));
}
void INSERTAR (Object sender, EventArgs e)
{
// creando y cargando el objeto OLEDBCOMMAND
// con instruccion sql insert into mitabla(listacampos) values(listadatos)
// @variable es una variable de tipo command o parametro
// ycada variale de estas ocupa un tipo de dato y un valor(textbox externo)
String q="insert into mitabla(clave,nombre,edad) values(@CLAVE, @NOMBRE, @EDAD)";
OleDbCommand orden= new OleDbCommand(q, coneccion);
orden.get_Parameters().Add(new OleDbParameter("@CLAVE", OleDbType.Integer));
orden.get_Parameters().get_Item("@CLAVE").set_Value(CLAVE.get_Text());
orden.get_Parameters().Add(new OleDbParameter("@NOMBRE", OleDbType.VarWChar, 20));
orden.get_Parameters().get_Item("@NOMBRE").set_Value(NOMBRE.get_Text());
orden.get_Parameters().Add(new OleDbParameter("@EDAD", OleDbType.Integer));
orden.get_Parameters().get_Item("@EDAD").set_Value(EDAD.get_Text());
// recordar que command ocupa tres instrucciones extras que estan abajo
orden.get_Connection().Open();
orden.ExecuteNonQuery();
orden.get_Connection().Close();
// REFRESCANDO DATASET con los nuevos datos de la tabla en disco
coneccion=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\progfacil\\lauro\\mibase.mdb");
canal=new OleDbDataAdapter("select * from mitabla", coneccion);
tabla= new DataSet();
canal.Fill(tabla, "mitabla");
TABLAGRID.set_DataSource(tabla);
TABLAGRID.set_DataMember("mitabla");
TABLAGRID.DataBind();
//cargando el textbox con la nueva clave clave correpondiente
// leyendo la primera columna(0) del ultimo renglon del dataset
int cren=tabla.get_Tables().get_Item("mitabla").get_Rows().get_Count();
int nvaclave=Convert.ToInt32(tabla.get_Tables().get_Item("mitabla").get_Rows().get_Item(cren-1).get_Item(0));
nvaclave= nvaclave + 1;
CLAVE.set_Text(Convert.ToString(nvaclave));
NOMBRE.set_Text(" ");
EDAD.set_Text(" ");
}
</script>

corrida prog27.aspx:

image16.jpg

Se agregaron tres textboxs arriba del datagrid para capturar los nuevos datos a insertar en la tabla.

En page_Load es el mismo codigo del programa anterior solo al final se usa el metodo row.count de dataset.tables[recuerdan la nota 8 del tema anterior] para conocer cuantos renglones tiene la tabla

Con esta informacion ya se puede leer la primera columna ( la cero 0 desde luego) para sacar el dato de la ultima clave

Luego se lee el ultimo renglon de la tabla con el metodo dataset.tables[].rows[reng][col]

Es importante que se entienda que con los formatos get-set se podran leer o cargar una celda de datos determinada.

Se desconto uno de la cantidad de renglones porque en tablas el primer renglon es el( Cero se acuerdan)

El metodo devolvio el valor de la ultima clave que esta en el ultimo renglon de la tabla, pero en string

Al final se incremento en uno la variable entera para obtener el valor de la nuevaclave o clavesiguiente, misma que se cargo en el textbox correspondiente

En funcion INSERTAR(), se crea la string q, con el formato apropiado sql( como se dijo al principio de este tema), observar que existen tres variables que llevan un @ antes, estas variables se llaman VARIABLES PARAMETROS, y se cargan con el objeto command.parameters()

Otra vez, en este ejemplo para mandar la instruccion sql a la base de datos, se crea y se usa un objeto command(llamado orden) que lleva como datos la string q y la coneccion, pero se agregan tres metodos command.parametro (orden.parameters()), en estos metodos se cargan las variables parametro primero con el valor de dato del textbox asp y luego se transforman al tipo de dato apropiado usando los oledbtype(que hay que estudiar porque se tienen que asociar directamente a los tipos de datos que se usaron en access)

Ya con el objeto COMMAND(orden) listo y cargado para comunicar la instruccion sql a la base de datos, se abre la coneccion a la base de datos se manda el executenonquery(no se quiere regresar nada en esta parte, recordar la nota respectiva que se dio en un tema anterior) y se cierra la coneccion y si dios quiere ya se mando el nuevo renglon a la base de datos en disco.

Al final de esta funcion INSERTAR, como ya se hizo un cambio en la base de datos, se tiene que volver a cargar el dataset con la nueva informacion(es el mismo codigo que se tiene en page_load) mas tantito codigo para limpiar y cargar los textboxs.

Problemas programacion j# net sugeridos:

1.- construir muchos programas de inserccion en las tablas de las bases de datos que tengan construidas

Politica de Privacidad