Ir a contenido


MENSAJE DE BIENVENIDA Foro vínculado con Twitter, más info aquí.

“El secreto para progresar es empezar por algún lugar. El secreto para empezar por algún lugar es fragmentar tus complejas y abrumadoras tareas de tal manera que queden convertidas en pequeñas tareas que puedas realizar y entonces simplemente comenzar por la primera.” - Mark Twain

Foto

Conectar a SQL con C#


  • Please log in to reply
4 replies to this topic

#1 Alberto Dominguez

Alberto Dominguez

    Gurú

  • Administradores
  • 1.059 Mensajes:
  • LocationMadrid

Escrito 07 agosto 2010 - 10:53

Os dejo código de ejemplo para conectar a una base de datos de MS-SQL:

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

conexionSQL.ConnectionString = "Server=10.10.10.10;initial catalog=BaseDatos; id=sa;password=123;Trusted_Connection=FALSE";
conexionSQL.Open; 

Conexion String genérico:

SqlConnection myConnection = new SqlConnection("user id=username;" + 
                                       "password=password;server=serverurl;" + 
                                       "Trusted_Connection=yes;" + 
                                       "database=database; " + 
                                       "connection timeout=30");

Luego para enviar comandos Transact SQL:

    SqlCommand cmd = new SqlCommand("Comando Transact SQL", conexionSQL);
    cmd.ExecuteNonQuery();

Y por último como almacenar el resultado de una consulta SELECT en un tipo "SqlDataReader" de .NET:

using System;
using System.Data.SqlClient;

namespace Consulta
{
    class Program
    {
        static void Main(string[] args)
        {
            SqlDataReader resConsulta = null;
            SqlConnection conexionSQL = new SqlConnection();
            conexionSQL.ConnectionString = "Server=localhost;initial catalog=Adventureworks; Trusted_Connection=TRUE";
            conexionSQL.Open();
            SqlCommand cmd = new SqlCommand("SELECT * FROM Person.Contact WHERE ContactID<=10", conexionSQL);
            resConsulta = cmd.ExecuteReader();
            while (resConsulta.Read())
            {
                Console.WriteLine(resConsulta["FirstName"].ToString() + " " + resConsulta["LastName"].ToString());
            }
            resConsulta.Close();
            cmd.Dispose();
            conexionSQL.Close();  
            Console.ReadLine();
        }
    }
}

Saludos,

Alberto Dominguez

Enterprise Architect y Trainer
MCT, MCPD, MCITP, MCITP Dynamics, MCSE, MCSA, MCTS, MCP...
ITIL V3 Foundation Qualification in IT Service Management
Imagen enviadaPerfil Profesional Imagen enviadaTwitter
Imagen enviadaImagen enviadaImagen enviadaImagen enviada

#2 Alberto Dominguez

Alberto Dominguez

    Gurú

  • Administradores
  • 1.059 Mensajes:
  • LocationMadrid

Escrito 24 septiembre 2010 - 05:55

Otro ejemplo que inserta un valor proporcionado por un parámetro:

using System;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Data;


namespace Consulta
{
    class Program
    {
        static void Main(string[] args)
        {
            SqlDataReader resConsulta = null;
            SqlConnection conexionSQL = new SqlConnection();
            conexionSQL.ConnectionString = "Server=localhost;initial catalog=Adventureworks; Trusted_Connection=TRUE";
            conexionSQL.Open();
            SqlCommand cmd = new SqlCommand("SELECT * FROM dbo.Prueba", conexionSQL);
            resConsulta = cmd.ExecuteReader();
            while (resConsulta.Read())
            {
                Console.WriteLine(resConsulta["Nombre"].ToString() + " " + resConsulta["Edad"].ToString());
            }
            resConsulta.Close();
            cmd.Parameters.Add("@parametro1", SqlDbType.VarChar);
            cmd.Parameters["@parametro1"].Value = "Jose";
            cmd.CommandText="INSERT INTO dbo.Prueba (Nombre,Edad) VALUES (@parametro1,80)";
            cmd.ExecuteNonQuery();
            
            cmd = new SqlCommand("SELECT * FROM dbo.Prueba", conexionSQL);
            resConsulta = cmd.ExecuteReader();
            while (resConsulta.Read())
            {
                Console.WriteLine(resConsulta["Nombre"].ToString() + " " + resConsulta["Edad"].ToString());
            }

            cmd.Dispose();
            conexionSQL.Close();
            Console.ReadLine();
        }
    }
}

Saludos,

Alberto Dominguez

Enterprise Architect y Trainer
MCT, MCPD, MCITP, MCITP Dynamics, MCSE, MCSA, MCTS, MCP...
ITIL V3 Foundation Qualification in IT Service Management
Imagen enviadaPerfil Profesional Imagen enviadaTwitter
Imagen enviadaImagen enviadaImagen enviadaImagen enviada

#3 Alberto Dominguez

Alberto Dominguez

    Gurú

  • Administradores
  • 1.059 Mensajes:
  • LocationMadrid

Escrito 16 mayo 2011 - 21:11

Como llamar a un PROCEDIMIENTO ALMACENADO:

Creamos el Procedimiento Almacenado en SQL:

CREATE PROCEDURE dbo.ObtenerDatos
   @N INT
AS 
BEGIN 
   SET NOCOUNT ON
   SELECT * FROM Person.person 
   WHERE BusinessEntityID <= @N
END

Lo llamamos desde C#:

using System;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Data;


namespace Consulta
{
    class Program
    {
        static void Main(string[] args)
        {
            SqlDataReader resConsulta = null;
            SqlConnection conexionSQL = new SqlConnection();
            conexionSQL.ConnectionString = "Server=localhost;initial catalog=Adventureworks2008; Trusted_Connection=TRUE";
            conexionSQL.Open();
            SqlCommand cmd = new SqlCommand("dbo.ObtenerDatos", conexionSQL);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@N", SqlDbType.Int);
            cmd.Parameters["@N"].Value = 5;
            resConsulta = cmd.ExecuteReader();
            
            while (resConsulta.Read())
            {
                Console.WriteLine(resConsulta["FirstName"].ToString() + " " + resConsulta["Lastname"].ToString());
            }
            resConsulta.Close();
            cmd.Dispose();
            conexionSQL.Close();
            Console.ReadLine();
        }
    }
}

Saludos,

Alberto Dominguez

Enterprise Architect y Trainer
MCT, MCPD, MCITP, MCITP Dynamics, MCSE, MCSA, MCTS, MCP...
ITIL V3 Foundation Qualification in IT Service Management
Imagen enviadaPerfil Profesional Imagen enviadaTwitter
Imagen enviadaImagen enviadaImagen enviadaImagen enviada

#4 Alberto Dominguez

Alberto Dominguez

    Gurú

  • Administradores
  • 1.059 Mensajes:
  • LocationMadrid

Escrito 16 mayo 2011 - 21:25

Como llamar a un PROCEDIMIENTO ALMACENADO con parámetros de salida:

Creamos el Procedimiento Almacenado en SQL:

CREATE PROCEDURE dbo.ObtenerDatos2
   @NFILASTOTALES INT OUTPUT
AS 
BEGIN 
   SET NOCOUNT ON
   SET @NFILASTOTALES = (SELECT COUNT(*) FROM Person.Person)
END

Lo llamamos desde C#:

using System;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Data;


namespace Consulta
{
    class Program
    {
        static void Main(string[] args)
        {
            int NFilas = 0;
            SqlDataReader resConsulta = null;
            SqlConnection conexionSQL = new SqlConnection();
            conexionSQL.ConnectionString = "Server=localhost;initial catalog=Adventureworks2008; Trusted_Connection=TRUE";
            conexionSQL.Open();
            SqlCommand cmd = new SqlCommand("dbo.ObtenerDatos2", conexionSQL);
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Add("@NFILASTOTALES", SqlDbType.Int);
            cmd.Parameters["@NFILASTOTALES"].Direction = ParameterDirection.Output;
            
            // Ejecutamos la Query
            cmd.ExecuteNonQuery();

            NFilas = (int)cmd.Parameters["@NFILASTOTALES"].Value;
            Console.WriteLine("Numero Filas Totales: {0}", NFilas);

            cmd.Dispose();
            conexionSQL.Close();
            Console.ReadLine();
        }
    }
}

Saludos,

Alberto Dominguez

Enterprise Architect y Trainer
MCT, MCPD, MCITP, MCITP Dynamics, MCSE, MCSA, MCTS, MCP...
ITIL V3 Foundation Qualification in IT Service Management
Imagen enviadaPerfil Profesional Imagen enviadaTwitter
Imagen enviadaImagen enviadaImagen enviadaImagen enviada

#5 Alberto Dominguez

Alberto Dominguez

    Gurú

  • Administradores
  • 1.059 Mensajes:
  • LocationMadrid

Escrito 16 mayo 2011 - 21:32

Otro ejemplo combinando parametros de Entrada y de Salida:

CREATE PROCEDURE dbo.ObtenerDatos3
   @N INT,
   @NFILASTOTALES INT OUTPUT
AS 
BEGIN 
   SET NOCOUNT ON
   SELECT * FROM Person.person 
   WHERE BusinessEntityID <= @N
   SET @NFILASTOTALES = (SELECT COUNT(*) FROM Person.Person)
END

using System;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Data;


namespace Consulta
{
    class Program
    {
        static void Main(string[] args)
        {
            int NFilas = 0;
            SqlDataReader resConsulta = null;
            SqlConnection conexionSQL = new SqlConnection();
            conexionSQL.ConnectionString = "Server=localhost;initial catalog=Adventureworks2008; Trusted_Connection=TRUE";
            conexionSQL.Open();
            SqlCommand cmd = new SqlCommand("dbo.ObtenerDatos3", conexionSQL);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@N", SqlDbType.Int);
            cmd.Parameters["@N"].Value = 5;
            cmd.Parameters.Add("@NFILASTOTALES", SqlDbType.Int);
            cmd.Parameters["@NFILASTOTALES"].Direction = ParameterDirection.Output;
            
            resConsulta = cmd.ExecuteReader();
            while (resConsulta.Read())
            {
                Console.WriteLine(resConsulta["FirstName"].ToString() + " " + resConsulta["Lastname"].ToString());
            }
            resConsulta.Close();

            cmd.ExecuteNonQuery();
            NFilas = (int)cmd.Parameters["@NFILASTOTALES"].Value;
            Console.WriteLine("Numero Filas Totales: {0}", NFilas);

            cmd.Dispose();
            conexionSQL.Close();
            Console.ReadLine();
        }
    }
}

Saludos,

Alberto Dominguez

Enterprise Architect y Trainer
MCT, MCPD, MCITP, MCITP Dynamics, MCSE, MCSA, MCTS, MCP...
ITIL V3 Foundation Qualification in IT Service Management
Imagen enviadaPerfil Profesional Imagen enviadaTwitter
Imagen enviadaImagen enviadaImagen enviadaImagen enviada




0 usuarios están leyendo este tema

0 miembro/s, 0 invitado/s, 0 usuario/s anónimo/s