Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
highlevel:csharp:apps [2009/02/23 14:33] alfred |
highlevel:csharp:apps [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 427: | Línea 427: | ||
| ===== Acceso a datos ===== | ===== Acceso a datos ===== | ||
| + | |||
| + | |||
| + | |||
| Línea 450: | Línea 453: | ||
| Los ''DataSet'' se llenan a partir de los datos de una DB mediante un ''DataAdapter'' configurado a partir de un objeto ''Connection'' y otro ''Command'' (y este a su vez configurado mediante objetos ''Parameter''). \\ \\ | Los ''DataSet'' se llenan a partir de los datos de una DB mediante un ''DataAdapter'' configurado a partir de un objeto ''Connection'' y otro ''Command'' (y este a su vez configurado mediante objetos ''Parameter''). \\ \\ | ||
| Ver ejemplos [[highlevel:csharp:snippets#trabajar_con_fuentes_de_datos|aquí]]. | Ver ejemplos [[highlevel:csharp:snippets#trabajar_con_fuentes_de_datos|aquí]]. | ||
| + | |||
| + | === Cómo hacer una petición a BD? === | ||
| + | Para acceder a una DB MSSQLServer (por ejemplo) necesitaremos utilizar las clases que están dentro del namespace ''System.Data.SqlClient'' siguiendo los siguientes pasos: | ||
| + | - Crear conexión, inicializando un objeto ''SqlConnection'' a partir de una ''ConnectionString''. | ||
| + | - Abrir la conexión llamando al método ''Open'' del ''SqlConnection''. | ||
| + | - Crear un objeto ''SqlCommand'', que será el que contenga la consulta a realizar sobre la DB. Se le ha de pasar la conexión. | ||
| + | - Ejecutar el ''SqlCommand'': | ||
| + | - Mediante el método ''ExecuteReader''. Que devuelve un ''DataReader'' del cual se podrán ir recogiendo los valores mientras el método ''Read'' devuelva ''true''. | ||
| + | - Mediante el método ''ExecuteNonQuery''. Que devuelve el número de filas afectadas, para consultas que no sean //selects// sino //inserts//, //updates//... | ||
| + | <code csharp> | ||
| + | SqlConnection con = new SqlConnection(@"Data Source=VALLIRANA\ALSQLEXP;Initial Catalog=prueba;Integrated Security=True"); | ||
| + | con.Open(); | ||
| + | SqlCommand cmd = new SqlCommand("select * from personas", con); | ||
| + | SqlDataReader dr = cmd.ExecuteReader(); | ||
| + | while (dr.Read()) | ||
| + | Console.WriteLine("Nombre: {0}", String.Format(dr.GetValue(0).ToString())); | ||
| + | </code> | ||
| + | === Trabajar con Interfaces === | ||
| + | Las clases que envuelven la conexión a datos heredan de diversas interfaces las cuales nos pueden permitir realizar las consultas de forma global, independientemente del motor de base de datos. Algunas de estas interfaces son: ''IDbConnection'', ''IDbCommand'' o ''IDataReader''. Por ejemplo las utilizaríamos así: | ||
| + | <code csharp> | ||
| + | IDbConnection connection = new SqliteConnection(connectionString); // Aquí podríamos haber creado un OracleClient | ||
| + | connection.Open(); | ||
| + | IDbCommand cmd = this.connection.CreateCommand(); | ||
| + | cmd.CommandText = query; | ||
| + | this.reader = cmd.ExecuteReader(); // O ExecuteNonQuery si no es un Select | ||
| + | while (reader.Read()) | ||
| + | { ... } | ||
| + | reader.Close(); | ||
| + | connection.Close(); | ||
| + | </code> | ||
| + | |||
| + | ==== DataBinding ==== | ||
| + | Es la capacidad de enlazar automáticamente campos de un formulario con los datos que provienen de una DB. \\ | ||
| + | El ejemplo más sencillo es el de un TextBox denominado ''txtBox'', para asignarle el campo ''FirstName'' de la tabla ''Customers'' que es del tipo "Text" y lo encontramos en el ''DataSet'' denominado ''dsCust''. | ||
| + | <code csharp> | ||
| + | txtBox.DataBindings.Add("Text",dsCust,"Customers.FirstName"); | ||
| + | </code> | ||
| + | Para coger la posición actual utilizaremos la clase ''CurrencyManager'': | ||
| + | <code csharp> | ||
| + | CurrencyManager cm = (CurrencyManager)this.BindingContext[dsCust,"Customers"]; | ||
| + | long rowPosition = (long)cm.Position; | ||
| + | </code> | ||
| ==== Sobre SQL y ADO.NET ==== | ==== Sobre SQL y ADO.NET ==== | ||