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:
Me da la impresión de que el fallo es una tontería, pero no logro resolverlo y me está volviendo loco. 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(); } }