Estoy trabajando con una base de datos en sql server.
La cadena de conexión sé que está correcta porque es la misma que utilizo en otros formularios y me funciona.
El formulario que estoy creando en asp y c#, lo que muestro es un textbox y un botón para introducir una cuenta nueva, y al pulsar el botón, mostrará todas las cuentas que hay, incluyendo la última creada en un gridview.
Estoy siguiendo unos ejemplos que tengo en los apuntes, pero no acabo de averiguar donde está el fallo.
El error me lo da en el método cargardatos(), concretamente en la línea que hago el oconexion.open();
Me da el siguiente error:
Referencia a objeto no establecida como instancia de un objeto.
He leído que si es porque no utilizo la palabra new(), pero no sé como solucionarlo.
El código que tengo es el siguiente:
Código:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class frmNuevaCuenta : System.Web.UI.Page
{
private SqlConnection oconexion;
private DataSet odataset;
private SqlDataAdapter odataadapter;
protected void Page_Load(object sender, EventArgs e)
{
//establecer conexión
SqlConnection oconexion = new SqlConnection();
oconexion.ConnectionString = "Server=.\\SQLEXPRESS;" + "DataBase=contabilidad;" + "Integrated Security=SSPI;";
//Crear adaptador
odataadapter = new SqlDataAdapter();
//Crear comando para inserción y consulta con sus parámetros y asignarlo al adaptador
//SQL de Inserción
string commandText1 = "INSERT INTO Cuenta (cuentaNombre) VALUES (@cuentaNombre)";
SqlCommand ocmdinsercion = new SqlCommand(commandText1, oconexion);
odataadapter.InsertCommand = ocmdinsercion;
odataadapter.InsertCommand.Parameters.Add("@cuentaNombre", SqlDbType.VarChar);
//SQL de Selección
string commandText2 = "SELECT * FROM CUENTA";
SqlCommand ocmdConsulta = new SqlCommand(commandText2, oconexion);
odataadapter.SelectCommand = ocmdConsulta;
//Crear conjunto de datos
odataset = new DataSet();
cargardatos();
}
protected void cargardatos()
{
odataset.Clear(); //Vaciar el DataSet
oconexion.Open(); //Abrir Conexion
//Utilizar el adaptador para llenar el dataset con una tabla
odataadapter.Fill(odataset, "Cuenta");
oconexion.Close(); //Cerrar conexion
//Enlazar el Dataset con el Datagrid
GridView1.DataSource = odataset;
GridView1.DataMember = "Cuenta";
}
protected void Button1_Click(object sender, EventArgs e)
{
odataadapter.InsertCommand.Parameters["@cuentaNombre"].Value = cuentaNom.Text;
oconexion.Open(); //Abrir Conexion
odataadapter.InsertCommand.ExecuteNonQuery(); //Ejecutar comando de inserción del adaptador
oconexion.Close(); //Cerrar conexión
cargardatos();
}
}
Me da la impresión de que el fallo es una tontería, pero no logro resolverlo y me está volviendo loco.