Introducción:
Aquí tienes el código completo para Visual C# 2005 o superior y usando una
base de datos de SQL Server.
Para insertar los datos, te lo muestro de dos formas: usando un objeto
SqlCommand y un SqlDataAdapter.
Recuerda que los datos están en una base de datos de SQL
Server que está en la instancia SQLEXPRESS del equipo local.
Para más info sobre la base de datos de ejemplo, ver:
Estructura de la tabla de
ejemplo.
Para usar esta clase, puedes usar el siguiente código:
class Program
{
static void Main(string[] args)
{
ejemploSQL();
Console.ReadLine();
}
static void ejemploSQL()
{
AccesoDatosSQL sql = new AccesoDatosSQL();
int t = sql.TotalRegistros();
Console.WriteLine("El total de registros es: {0}", t);
Console.WriteLine();
int id;
// Usando un command
id = sql.Insertar("Guillermo", "Som",
"[email protected]", DateTime.Now,
"Prueba de insertar datos " + t + 1);
Console.WriteLine("El nuevo ID es: {0}", id);
// Usando un dataAdapter
//id = sql.InsertarAdapter("Guillermo", "Som",
// "[email protected]", DateTime.Now,
// "Prueba de insertar datos " & t + 1);
//Console.WriteLine("El nuevo ID es: {0}", id);
// Actualizar el ID 2
id = 2;
sql.Actualizar(id, "Guillermo nº" + id, "Som",
"[email protected]", DateTime.Now);
}
}
//-----------------------------------------------------------------------------
// Instrucciones SQL desde ADO.NET con Visual C# y SQL Server (26/May/08)
//
// ©Guillermo 'guille' Som, 2008
//-----------------------------------------------------------------------------
using System;
using System.Data;
using System.Data.SqlClient;
namespace InstruccionesSQL_CS
{
public class AccesoDatosSQL
{
public string NombreTabla = "Tabla1";
public string CadenaConexion()
{
SqlConnectionStringBuilder csb = new SqlConnectionStringBuilder();
csb.DataSource = @"(local)\SQLEXPRESS";
csb.InitialCatalog = "prueba_SQL";
csb.IntegratedSecurity = true;
return csb.ConnectionString;
}
public int Insertar(string nombre,
string apellidos, string email,
DateTime fecha, string descripcion)
{
string sCon = CadenaConexion();
string sel;
sel = "INSERT INTO " + NombreTabla +
"(Nombre, Apellidos, Email, Fecha, Descripcion) " +
"VALUES " + "(@Nombre, @Apellidos, @Email, @Fecha, @Descripcion) " +
"SELECT @@Identity";
using(SqlConnection con = new SqlConnection(sCon))
{
SqlCommand cmd = new SqlCommand(sel, con);
cmd.Parameters.AddWithValue("@Nombre", nombre);
cmd.Parameters.AddWithValue("@Apellidos", apellidos);
cmd.Parameters.AddWithValue("@Email", email);
cmd.Parameters.AddWithValue("@Fecha", fecha);
cmd.Parameters.AddWithValue("@Descripcion", descripcion);
con.Open();
int t = Convert.ToInt32(cmd.ExecuteScalar());
con.Close();
return t;
}
}
public int InsertarAdapter(string nombre,
string apellidos, string email,
DateTime fecha, string descripcion)
{
string sCon = CadenaConexion();
string sel;
// Usando un DataAdapter
sel = "SELECT * FROM " + NombreTabla;
SqlDataAdapter da = new SqlDataAdapter(sel, sCon);
da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
SqlCommandBuilder cb = new SqlCommandBuilder(da);
DataTable dt = new DataTable();
da.Fill(dt);
DataRow dr = dt.NewRow();
dr["Nombre"] = nombre;
dr["Apellidos"] = apellidos;
dr["Email"] = email;
dr["Fecha"] = fecha.ToString("dd/MM/yyyy");
dr["Descripcion"] = descripcion;
dt.Rows.Add(dr);
da.Update(dt);
return Convert.ToInt32(dr["ID"]);
}
public void Eliminar(int id)
{
string sCon = CadenaConexion();
string sel = "DELETE FROM " + NombreTabla + " WHERE ID = @ID";
using(SqlConnection con = new SqlConnection(sCon))
{
SqlCommand cmd = new SqlCommand(sel, con);
cmd.Parameters.AddWithValue("@ID", id);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
public void Actualizar(int id, string nombre,
string apellidos, string email, DateTime fecha)
{
string sCon = CadenaConexion();
string sel;
sel = "UPDATE " + NombreTabla +
" SET Nombre = @Nombre, Apellidos = @Apellidos, Email = @Email, Fecha = @Fecha" +
" WHERE ID = @ID";
using(SqlConnection con = new SqlConnection(sCon))
{
SqlCommand cmd = new SqlCommand(sel, con);
cmd.Parameters.AddWithValue("@ID", id);
cmd.Parameters.AddWithValue("@Nombre", nombre);
cmd.Parameters.AddWithValue("@Apellidos", apellidos);
cmd.Parameters.AddWithValue("@Email", email);
cmd.Parameters.AddWithValue("@Fecha", fecha);
con.Open();
int t = cmd.ExecuteNonQuery();
con.Close();
Console.WriteLine("Filas actualizadas: {0}", t);
}
}
public int TotalRegistros()
{
string sCon = CadenaConexion();
string sel = "SELECT COUNT(*) FROM " + NombreTabla;
using(SqlConnection con = new SqlConnection(sCon))
{
SqlCommand cmd = new SqlCommand(sel, con);
con.Open();
int t = Convert.ToInt32(cmd.ExecuteScalar());
con.Close();
return t;
}
}
}
}
Espero que te sea de utilidad y si quieres ver otros ejemplos del resto de
comandos, puedes hacerlo desde:
Instrucciones SQL desde ADO.NET.
Nos vemos.
Guillermo
Espacios de nombres usados en el código de este artículo:
System.Data.SqlClient