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/03/18 09:51] alfred |
highlevel:csharp:apps [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 427: | Línea 427: | ||
| ===== Acceso a datos ===== | ===== Acceso a datos ===== | ||
| + | |||
| Línea 468: | Línea 469: | ||
| while (dr.Read()) | while (dr.Read()) | ||
| Console.WriteLine("Nombre: {0}", String.Format(dr.GetValue(0).ToString())); | 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> | </code> | ||