C sharp - Explicacion para el que necesite

 
Vista:

Explicacion para el que necesite

Publicado por fisa (87 intervenciones) el 24/11/2006 19:34:06
Este es un mail que escribi para alguien del foro que me pregunto como hacer para conectarse a una base de daos desde C#.net,. Lo pongo aca por si a alguien le interesa, porque me parece bastante util y completa:

xxx:

Voy a intentar darte las nociones basicas de la manera mas sencilla de conectarse a un servidor de base de datos, y hacer algunas operaciones con el mismo. Te aclaro que con el tiempo vas a tener que seguir investigando, porque hay muchas cosas que ahora no te voy a decir porque no las vas a entender, pero cuando manejes bien estas cosas podes seguir ahondando.

Lo fundamental es que para conectarse a bases de datos desde .net, desde cualquiera de sus lenguajes, se utiliza siempre ADO.net.
ADO.net es una libreria que contiene todas las clases (objetos) necesarios para conectarse y trabajar con bases de datos.
No te preocupes, no tenes que agregar ni instalar nada nuevo, ADO.net es parte de las librerias basicas de .net, esta adentro.

Podes ver la mayoria de los objetos de ADO.net en el espacio de nombres System.Data.
Pero a su vez, hay objetos diferentes para los diferentes clientes de bases de datos: SQL Server, Access (OleDb), ODBC, Oracle.
Yo te voy a explicar todo para SQL Server, pero es casi exactamente igual para todo el resto.

Te voy a expliccar rapidamente como usar los principales, y los mas faciles. El resto los veras con el tiempo (si te interesa, hay muchisimo para leer en la MSDN, la red de desarrolladores de Microsoft: www.msdn.com, y de ahi vas al developer center de tu pais)

El principal objeto es la conexion. Esta va a permitir literalmente conectarse a la base de datos, y nada mas.
Para crear una conexion lo haces asi:

System.Data.SqlClient.SqlConnection MiConexion = new System.Data.SqlClient.SqlConnection();

Pero con eso no basta, ademas tenes que establecer el string de conexion:

MiConexion.ConnectionString = "User ID= MiUsuario;Password= MiContrasena;database= MiBaseDatos;server= MiServidor;Connect Timeout= 30;";

Los datos de servidor, base de datos, usuario y contraseña dependeran de tu base de datos, si no entendes algo preguntame, pero sino lo voy a obviar.

Con esos datos ya podes conectarte y desconectarte a la base de datos (nada mas), de la siguiente forma:

MiConexion.Open();

MiConexion.Close();

Pero ahora te voy a explicar algo un poco mas complejo...

El siguiente objeto de importancia es System.Data.SqlClient.SqlCommand. Este te va a permitir ejecutar comandos SQL (supongo que sabes lo que es el lenguaje SQL) en la base de datos.
Como sabras (y sino preguntame) hay 3 tipos de instrucciones SQL: las que te devuelven registros (consultas), las que te devuelven numeros (escalares), y las que no devuelven nada.
El objeto SqlCommand te va a permitir ejecutar sentencias SQL de los tres tipos en la base de datos, mediante tres metodos (uno para cada tipo).

Primero creemos un SqlCommand, y asignemosle la conexion nuestra:

System.Data.SqlClient.SqlCommand MiCommand = new System.Data.SqlClient.SqlCommand();
MiCommand.Connection = MiConexion;

Ahora, para ejecutar una sentencia que no devuelve nada (un insert, por ejemplo), hacemos asi:

MiCommand.CommandText = "mi sentencia sql";
MiCommand.ExecuteNonQuery();

(Tene en cuenta que siempre antes tiene que estar abierta la conexion)
Ahora, si queremos ejecutar una sentencia que devuelve un numero (por ejemplo un select count), hacemos asi:

MiCommand.CommandText = "mi sentencia sql";
Resultado = MiCommand.ExecuteScalar();

Resultado es una variable del tipo de datos que vos necesitas. Pero pensa que lo que devuelve esto es un Object, asi que si Resultado es de otro tipo de datos que no sea object vas a tener que dar un formato explicito, por ejemplo si Resultado es de tipo double, seria:

Resultado = (double) MiCommand.ExecuteScalar();

Finalmente, para ejecutar sentencias que devuelven colecciones de registros, como un select, tenes que usar otro objeto mas, que actua como itermediario y formatea los registros para poder devolver el resultado como un DataSet.
Por si no lo sabes, un DataSet es un conjunto de tablas en memoria, casi como una base de datos, pero no en un archivo fisico o en un servidor, sino en memoria. Cualquier cosa te lo explico bien.
Entonces, el objeto nuevo que vamos a usar es el SqlDataAdapter.
Se haria asi:

System.Data.SqlClient.SqlDataAdapter MiDataAdapter = new System.Data.SqlClient.SqlDataAdapter();
System.Data.DataSet MiDataSet = new System.Data.DataSet();
MiCommand.CommandText = "mi sentencia sql";
DataSetInterno.Reset();
MiDataAdapter.SelectCommand = MiCommand;
MiDataAdapter.Fill(MiDataSet);

Con esto, se crearia una tabla dentro del DataSet y se rellenaria con los registros que devolvio la sentencia.
Si necesitas mas informacion acerca de lo que es un DataSet (y cosas relacionadas) o cualquier otra pregunta acerca de lo que te explique, pregunta, no hay drama.

Acordate que hay maneras mas complejas (y mejores) de hacer esto, pero para empezar entende bien estas cosas.

Bueno, te dejo, porque tengo que seguir con una reunion con un MVP (Most Valuable Professional) de Microsoft, que vino a hacernos una consultoria a la empresa, jeje, tenia que decirlo...

Chau, suerte!

Fisa
Correo: [email protected]
MSN: [email protected]
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Explicacion para el que necesite

Publicado por Lucia (4 intervenciones) el 18/12/2006 12:01:50
Holaaaa

tengo una duda sobre lo que has explicado.. esta explicacion sirve tambien para tablas cradas en acces?? Esque yo estoy trabajando con combobox anidados, y para ello depende de la seleccion que eliga el usuario, la siguiente tabla me cambia los valores..y tengo un proyecto como ejemplo que utiliza db.strSQL y tampoco entiendo muy bien que es lo que hace

La contraseña donde debes ponerla??

Muchisismas gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar