Skip to content

Commit

Permalink
add DAW vault
Browse files Browse the repository at this point in the history
  • Loading branch information
David7ce committed Sep 9, 2024
1 parent 99d09d1 commit 1ee335f
Show file tree
Hide file tree
Showing 149 changed files with 17,599 additions and 3,182 deletions.
90 changes: 0 additions & 90 deletions CODE_OF_CONDUCT.md

This file was deleted.

19 changes: 1 addition & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1 @@
# Quartz v4

> [One] who works with the door open gets all kinds of interruptions, but [they] also occasionally gets clues as to what the world is and what might be important.” — Richard Hamming
Quartz is a set of tools that helps you publish your [digital garden](https://jzhao.xyz/posts/networked-thought) and notes as a website for free.
Quartz v4 features a from-the-ground rewrite focusing on end-user extensibility and ease-of-use.

🔗 Read the documentation and get started: https://quartz.jzhao.xyz/

[Join the Discord Community](https://discord.gg/cRFFHYye7t)

## Sponsors

<p align="center">
<a href="https://github.com/sponsors/jackyzha0">
<img src="https://cdn.jsdelivr.net/gh/jackyzha0/jackyzha0/sponsorkit/sponsors.svg" />
</a>
</p>
# Compuwiki
Binary file added content/C#/apuntes-dotnet/C#-NET.pdf
Binary file not shown.
163 changes: 163 additions & 0 deletions content/C#/apuntes-dotnet/CS-CRUD.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
## CRUD (Create Read Update Delete)

- Create = Crear, Agregar, Insertar, Registrar
- Read = Leer, Mostrar
- Update = Actualizar, Cambiar registro, Modificar
- Delete = Borrar, Eliminar

> El CRUD puede ser tanto:
> DDL (CREATE, ALTER, DROP)
> DML (SELECT, INSERT, UPDATE, DELETE)
En C# usamos DML ya que previamente hemos creado la estructura de la base de datos con DDL.

- Leer datos con SELECT
```cs
private void btnMostrarPaciente(object sender, RoutedEventArgs e)
{
eleccion = "Paciente";
string consulta = "SELECT Id, CONCAT(ID, ' - ' ,Nombre, ' ' ,Apellido1, ' ' ,Apellido2)"
+ " AS infoPaciente FROM Paciente";
SqlDataAdapter miAdaptadorSql = new SqlDataAdapter(consulta, miConexionSql);
using (miAdaptadorSql)
{
DataTable pacientesTabla = new DataTable();
miAdaptadorSql.Fill(pacientesTabla);
lstboxPacienteDoctor.DisplayMemberPath = "infoPaciente";
lstboxPacienteDoctor.SelectedValuePath = "Id";
lstboxPacienteDoctor.ItemsSource = pacientesTabla.DefaultView;
}
}
```

- Crear registro con INSERT
```cs
private void btnRegistrar(object sender, RoutedEventArgs e)
{
try
{
string nombre = txtNombre.Text;
string apellido1 = txtApellido1.Text;
string apellido2 = txtApellido2.Text;
string especialidad = cmbEspecialidades.Text;
string consulta = "INSERT INTO Doctor (Nombre, Apellido1, Apellido2, Especialidad) " +
$"VALUES ('{nombre}', '{apellido1}', '{apellido2}', '{especialidad}')";
SqlCommand miComandoSql = new SqlCommand(consulta, miConexionSql);
miConexionSql.Open();
miComandoSql.ExecuteNonQuery();
miConexionSql.Close();
MessageBox.Show("Doctor insertado correctamente!");
}
catch (Exception ex)
{
MessageBox.Show("Error al insertar el doctor: " + ex.Message);
}
}
```

- Borrar registro con DELETE
```cs
private void btnEliminar(object sender, RoutedEventArgs e)
{
// MessageBox.Show(lstboxHospitalizacion.SelectedValue.ToString());
string consulta = "DELETE FROM Hospitalizacion WHERE ID=@id_hospitalizacion";

SqlCommand miSqlCommand = new SqlCommand(consulta, miConexionSql);
miConexionSql.Open();
miSqlCommand.Parameters.AddWithValue("@id_hospitalizacion", lstboxHospitalizacion.SelectedValue);
miSqlCommand.ExecuteNonQuery();
miConexionSql.Close();
MessageBox.Show("Hospitalización eliminada!");
}
```

- Actualizar registro con UPDATE, pero se puede rellenar los listboxes y usar btnRegistrar

- Primero se han de rellenar los datos en los campos
```cs
public void RellenarDatos()
{
string consulta = "SELECT Nombre, Apellido1, Fecha_Nacimiento, Telefono FROM Paciente WHERE ID=@relleno;";

SqlCommand comandoSQL = new SqlCommand(consulta, miConexionSql);

SqlDataAdapter miAdaptadorSql = new SqlDataAdapter(comandoSQL);

miConexionSql.Open();
using (miAdaptadorSql)
{
comandoSQL.Parameters.AddWithValue("@relleno", lstPacientes.SelectedValue);
DataTable pacientesTabla = new DataTable();
miAdaptadorSql.Fill(pacientesTabla);

txtNombre.Text = pacientesTabla.Rows[0]["Nombre"].ToString();
txtPrimerApellido.Text = pacientesTabla.Rows[0]["Apellido1"].ToString();
txtSegundoApellido.Text = pacientesTabla.Rows[0]["Apellido2"].ToString();
//dpFechaNamcimiento.SelectedDate = pacientesTabla.Rows[0]["Fecha_Nacimiento"];
txtDireccion.Text = pacientesTabla.Rows[0]["Direccion"].ToString();
txtTelefono.Text = pacientesTabla.Rows[0]["Telefono"].ToString();
txtEmail.Text = pacientesTabla.Rows[0]["Email"].ToString();
}
miConexionSql.Close();
}
```

- Luego podemos actualizar el registro modificando los datos anteriores
```cs
private void Modificar()
{
try
{
string nombre = txtNombre.Text;
string apellido1 = txtApellido1.Text;
string apellido2 = txtApellido2.Text;
string consulta = $"UPDATE Doctor SET Nombre='{nombre}', Apellido1='{apellido1}', Apellido2='{apellido2}' WHERE ID = @idDoctor;";
using (SqlCommand command = new SqlCommand(consulta, miConexionSql))
{
miConexionSql.Open();
command.Parameters.AddWithValue("@idDoctor", lstDoctores.SelectedValue);
command.ExecuteNonQuery();
miConexionSql.Close();
}
MessageBox.Show("Doctor modificado.");
}
catch (Exception ex)
{
MessageBox.Show("Error al modificar el doctor: " + ex.Message);
}
}

// Opción de chatGPT
private void btnModificar(object sender, RoutedEventArgs e)
{
string query = "UPDATE Doctor SET Nombre = @Nombre, Apellido1 = @Apellido1, Apellido2 = @Apellido2 WHERE Id = @Id";

using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@Nombre", doctor.Nombre);
command.Parameters.AddWithValue("@Apellido1", doctor.Apellido1);
command.Parameters.AddWithValue("@Apellido2", doctor.Apellido2);
command.Parameters.AddWithValue("@Id", doctor.Id);

connection.Open();
command.ExecuteNonQuery();
}

MessageBox.Show("Tabla modificada!");
}

private void lstboxPacienteDoctor_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// Verificar si se ha seleccionado un elemento en el ListBox
if (lstboxPacienteDoctor.SelectedItem != null)
{
Paciente pacienteSeleccionado = (Paciente)lstboxPacienteDoctor.SelectedItem;

// Asignar los valores del paciente seleccionado a los TextBox
txtNombre.Text = pacienteSeleccionado.Nombre;
txtApellido1.Text = pacienteSeleccionado.Apellido1;
txtApellido2.Text = pacienteSeleccionado.Apellido2;
}
}
```
94 changes: 94 additions & 0 deletions content/C#/apuntes-dotnet/cs-database-connection.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# Conexión a la base de datos

Si estamos trabajando en un aplicación con interfaz gráfica programada en C# desde Visual Studio y queremos conectarnos a una base de datos Microsoft SQL server, tenemos que hacer uso de la clase `SqlConnection` del espacio de nombres System.Data.SqlClient

De esta forma podremos ejecutar consultas SQL para defnir datos DDL, manejar datos DML, etc.

Para utilizar `SqlConnection`, primero debes agregar la referencia al ensamblado `System.Data.SqlClient` a tu proyecto. Luego, puedes crear una instancia de `SqlConnection` para establecer una conexión con tu base de datos de SQL Server. La cadena de conexión que pases como argumento al constructor de `SqlConnection` debe contener información sobre cómo conectarse a la base de datos, como el servidor, la base de datos, las credenciales de autenticación, etc.

Aquí dos ejemplos básicos para conectarnos a la base de datos SQL server

1. Conexión a la base de datos con constructor de la ventana vacío
```cs
namespace App
{
public partial class Ventana : Window
{
SqlConnection miConexionSql;

public Ventana()
{
InitializeComponent();

string cadenaConexion = ConfigurationManager.ConnectionStrings["valor de name en App.config"].ConnectionString;
miConexionSql = new SqlConnection(cadenaConexion);
}

// Métodos de la ventana
}
}
```

2. Conexión a la base de datos con constructor que recibe la cadena de conexión
```cs
namespace App
{
public partial class Ventana : Window
{
private SqlConnection miConexionSql;

// Constructor de la ventana
public Ventana()
{
InitializeComponent();
InicializarConexion();

// InicializarConexion() equivale a esto sin try-catch
//ConexionSQL conexionSQL = new ConexionSQL();
//string cadenaConexion = conexionSQL.crearConexion();
//miConexionSql = new SqlConnection(cadenaConexion);
}

// Constructor con sobrecarga, tiene como parámetro de entrada el string de Conexion
public Consulta(SqlConnection miConexionSql)
{
InitializeComponent();
this.miConexionSql = miConexionSql;
}

private void InicializarConexion()
{
try
{
ConexionSQL conexionSQL = new ConexionSQL();
string cadenaConexion = conexionSQL.crearConexion();
miConexionSql = new SqlConnection(cadenaConexion);
}
catch (Exception ex)
{
// Mostrar excepción
MessageBox.Show("Error al conectar a la base de datos: " + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}
```

Y clase ConexionSQL con método que devuelve la cadena de conexión:
```cs
namespace App
{
internal class ConexionSQL
{
public ConexionSQL() { }

public string crearConexion ()
{
// cambiar la frase de conexión según el equipo
return ConfigurationManager.ConnectionStrings["valor de name en App.config"].ConnectionString;
}
}
}
```



Loading

0 comments on commit 1ee335f

Please sign in to comment.