Skip to content

Commit 042d57e

Browse files
authored
Merge pull request #9 from alosslessdev/alosslessdev
Alosslessdev
2 parents b8bd45f + 216eb74 commit 042d57e

8 files changed

Lines changed: 107 additions & 111 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
/.vs
22
/obj/*
3+
.exe
4+
.pdb

ConexionBaseDeDatos.cs

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,39 @@
66
using System.Text;
77
using System.Threading.Tasks;
88

9+
/*
10+
* Carrasco, Nathan
11+
* Herrera, Francisco
12+
* Wu, Iván
13+
*/
14+
915
namespace Lab_6
1016
{
1117
internal class ConexionBaseDeDatos
1218
{
1319

1420
private string detallesConexion = "Data Source=localhost;Initial Catalog=Libreria;Integrated Security=True";
1521

16-
public DataSet ObtenerDatos()
22+
internal DataSet ObtenerDatos(bool entradaSiOrdenarPorNuevoPrimero)
1723
{
1824
DataSet datos = new DataSet();
1925
try
2026
{
2127
using (SqlConnection conexion = new SqlConnection(detallesConexion))
2228
{
23-
string query = "SELECT Titulo, Autor, CantidadDisponible FROM Libros";
24-
SqlDataAdapter adaptador = new SqlDataAdapter(query, conexion);
25-
adaptador.Fill(datos, "Libros");
29+
if (entradaSiOrdenarPorNuevoPrimero)
30+
{
31+
string query = "SELECT ID, Titulo, Autor, CantidadDisponible FROM Libros ORDER BY ID Desc";
32+
SqlDataAdapter adaptador = new SqlDataAdapter(query, conexion);
33+
adaptador.Fill(datos, "Libros");
34+
}
35+
else
36+
{
37+
38+
string query = "SELECT ID, Titulo, Autor, CantidadDisponible FROM Libros";
39+
SqlDataAdapter adaptador = new SqlDataAdapter(query, conexion);
40+
adaptador.Fill(datos, "Libros");
41+
}
2642
}
2743
}
2844
catch (SqlException ex)
@@ -32,7 +48,7 @@ public DataSet ObtenerDatos()
3248
return datos;
3349
}
3450

35-
public void InsertDatos(string tituloMetodo, string salario, int cantidadDisponibleMetodo)
51+
internal void InsertDatos(string tituloMetodo, string salario, int cantidadDisponibleMetodo)
3652
{
3753
try
3854
{
@@ -54,15 +70,17 @@ public void InsertDatos(string tituloMetodo, string salario, int cantidadDisponi
5470

5571
}
5672

57-
public void UpdateDatos(int cantidadDisponibleMetodo)
73+
internal void UpdateDatos(int cantidadDisponibleMetodo, int idEntrada)
5874
{
5975
try
6076
{
6177
using (SqlConnection conexion = new SqlConnection(detallesConexion))
6278
{
63-
string query = "UPDATE Libros SET CantidadDisponible = @CantidadDisponible";
79+
string query = "UPDATE Libros SET CantidadDisponible = @CantidadDisponible WHERE id = @id";
6480
SqlCommand instruccion = new SqlCommand(query, conexion);
6581
instruccion.Parameters.AddWithValue("@CantidadDisponible", cantidadDisponibleMetodo);
82+
instruccion.Parameters.AddWithValue("@id", idEntrada);
83+
6684
conexion.Open();
6785
instruccion.ExecuteNonQuery();
6886
}
@@ -74,15 +92,14 @@ public void UpdateDatos(int cantidadDisponibleMetodo)
7492

7593
}
7694

77-
public void DeleteDatos(string tituloMetodo, string salario, int cantidadDisponibleMetodo)
95+
internal void DeleteDatos(string queryEntrada)
7896
{
7997
try
8098
{
8199
using (SqlConnection conexion = new SqlConnection(detallesConexion))
82100
{
83-
string query = "DELETE FROM Libros WHERE Titulo = @Titulo";
101+
string query = queryEntrada;
84102
SqlCommand instruccion = new SqlCommand(query, conexion);
85-
instruccion.Parameters.AddWithValue("@Titulo", tituloMetodo);
86103
conexion.Open();
87104
instruccion.ExecuteNonQuery();
88105
}

Form1.Designer.cs

Lines changed: 5 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Form1.cs

Lines changed: 66 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -9,44 +9,57 @@
99
using System.Threading.Tasks;
1010
using System.Windows.Forms;
1111

12+
/*
13+
* Carrasco, Nathan
14+
* Herrera, Francisco
15+
* Wu, Iván
16+
*/
17+
1218

1319
namespace Lab_6
1420
{
15-
public partial class fBiblioteca : Form
21+
public partial class FBiblioteca : Form
1622
{
17-
public fBiblioteca()
23+
public FBiblioteca()
1824
{
1925
InitializeComponent();
2026
}
2127

28+
private void RefrescarDataGridView()
29+
{
30+
ConexionBaseDeDatos conexionBaseDeDatos = new ConexionBaseDeDatos();
31+
DataSet datos = conexionBaseDeDatos.ObtenerDatos(false); // falso significa no muestres al elemento mas reciente de primero en el datagridview
32+
dgvLibro.DataSource = datos.Tables["Libros"]; //refresca el datagridview
33+
conexionBaseDeDatos = null;
34+
}
35+
36+
2237
private void btMostrarLibro_Click(object sender, EventArgs e)
2338
{
24-
string connectionString = "your_connection_string_here"; // Actualiza con tu cadena de conexión
25-
string query = "SELECT * FROM Libros"; // Consulta para obtener todos los libros
39+
RefrescarDataGridView();
40+
41+
}
42+
43+
private void btEliminarLibro_Click(object sender, EventArgs e)
44+
{
2645

27-
using (SqlConnection connection = new SqlConnection(connectionString))
46+
if (dgvLibro.DataSource == null)
2847
{
29-
SqlDataAdapter dataAdapter = new SqlDataAdapter(query, connection);
30-
DataSet dataSet = new DataSet();
31-
32-
try
33-
{
34-
connection.Open();
35-
dataAdapter.Fill(dataSet, "Libros");
36-
dgvLibro.DataSource = dataSet.Tables["Libros"];
37-
}
38-
catch (Exception ex)
39-
{
40-
MessageBox.Show("Error al mostrar libros: " + ex.Message);
41-
}
48+
RefrescarDataGridView();
49+
MessageBox.Show("Seleccione los libros que desea eliminar." + Environment.NewLine +
50+
"Para seleccionar un libro, vaya a la fila que tiene el libro que quiera eliminar, " +
51+
"mire a la celda vacia a la izquierda de la fila, y haga click en esa celda vacia, lo que cambiara el color de la fila, " +
52+
"seleccionando el libro.");
53+
return;
4254
}
43-
}
4455

45-
private void btEliminarLibro_Click(object sender, EventArgs e)
46-
{
4756
if (dgvLibro.SelectedRows.Count == 0)
4857
{
49-
MessageBox.Show("Seleccione los libros que desea eliminar.");
58+
MessageBox.Show("Seleccione los libros que desea eliminar." + Environment.NewLine +
59+
"Para seleccionar un libro, vaya a la fila que tiene el libro que quiera eliminar, " +
60+
"mire a la celda vacia a la izquierda de la fila, y haga click en esa celda vacia, lo que cambiara el color de la fila, " +
61+
"seleccionando el libro.");
62+
5063
return;
5164
}
5265

@@ -58,7 +71,6 @@ private void btEliminarLibro_Click(object sender, EventArgs e)
5871
return;
5972
}
6073

61-
string connectionString = "your_connection_string_here";
6274
List<int> idsEliminar = new List<int>();
6375

6476
foreach (DataGridViewRow row in dgvLibro.SelectedRows)
@@ -70,30 +82,31 @@ private void btEliminarLibro_Click(object sender, EventArgs e)
7082
string ids = string.Join(",", idsEliminar);
7183
string query = $"DELETE FROM Libros WHERE id IN ({ids})";
7284

73-
using (SqlConnection connection = new SqlConnection(connectionString))
74-
{
75-
SqlCommand command = new SqlCommand(query, connection);
76-
try
77-
{
78-
connection.Open();
79-
int filasEliminadas = command.ExecuteNonQuery();
80-
MessageBox.Show($"{filasEliminadas} libros eliminados.");
81-
82-
// Refrescar el DataGridView
83-
btMostrarLibro_Click(sender, e);
84-
}
85-
catch (Exception ex)
86-
{
87-
MessageBox.Show("Error al eliminar libros: " + ex.Message);
88-
}
89-
}
85+
ConexionBaseDeDatos conexionBaseDeDatosInterno = new ConexionBaseDeDatos();
86+
conexionBaseDeDatosInterno.DeleteDatos(query);
87+
88+
RefrescarDataGridView();
89+
9090
}
9191

9292
private void btActualizar_Click(object sender, EventArgs e)
9393
{
94+
95+
if (dgvLibro.DataSource == null) {
96+
RefrescarDataGridView();
97+
MessageBox.Show("Seleccione un solo libro para actualizar. " + Environment.NewLine +
98+
"Para seleccionar un libro, vaya a la fila que tiene el libro que quiera actualizar, " +
99+
"mire a la celda vacia a la izquierda de la fila, y haga click en esa celda vacia, lo que cambiara el color de la fila, " +
100+
"seleccionando el libro.");
101+
return;
102+
}
103+
94104
if (dgvLibro.SelectedRows.Count != 1)
95105
{
96-
MessageBox.Show("Seleccione un solo libro para actualizar.");
106+
MessageBox.Show("Seleccione un solo libro para actualizar. " + Environment.NewLine +
107+
"Para seleccionar un libro, vaya a la fila que tiene el libro que quiera actualizar, " +
108+
"mire a la celda vacia a la izquierda de la fila, y haga click en esa celda vacia, lo que cambiara el color de la fila, " +
109+
"seleccionando el libro.");
97110
return;
98111
}
99112

@@ -110,29 +123,12 @@ private void btActualizar_Click(object sender, EventArgs e)
110123

111124
if (int.TryParse(input, out int nuevaCantidad))
112125
{
113-
string connectionString = "your_connection_string_here";
114-
string query = "UPDATE Libros SET CantidadDisponible = @Cantidad WHERE id = @id";
115-
116-
using (SqlConnection connection = new SqlConnection(connectionString))
117-
{
118-
SqlCommand command = new SqlCommand(query, connection);
119-
command.Parameters.AddWithValue("@Cantidad", nuevaCantidad);
120-
command.Parameters.AddWithValue("@id", id);
121-
122-
try
123-
{
124-
connection.Open();
125-
command.ExecuteNonQuery();
126-
MessageBox.Show("Cantidad actualizada correctamente.");
127-
128-
// Refrescar el DataGridView
129-
btMostrarLibro_Click(sender, e);
130-
}
131-
catch (Exception ex)
132-
{
133-
MessageBox.Show("Error al actualizar libro: " + ex.Message);
134-
}
135-
}
126+
127+
ConexionBaseDeDatos conexionBaseDeDatos = new ConexionBaseDeDatos();
128+
conexionBaseDeDatos.UpdateDatos(nuevaCantidad, id);
129+
130+
RefrescarDataGridView();
131+
136132
}
137133
else
138134
{
@@ -160,44 +156,18 @@ private void btAgregarLibro_Click(object sender, EventArgs e)
160156
string cantidadStr = Microsoft.VisualBasic.Interaction.InputBox("Ingrese la cantidad disponible:", "Agregar libro");
161157
if (!int.TryParse(cantidadStr, out int cantidadDisponible))
162158
{
163-
MessageBox.Show("Debe ingresar una cantidad válida.");
159+
MessageBox.Show("Debe ingresar una cantidad numerica como 5, 9, etc.");
164160
return;
165161
}
166162

167-
string connectionString = "your_connection_string_here";
168-
string query = "INSERT INTO Libros (Titulo, Autor, CantidadDisponible) VALUES (@Titulo, @Autor, @Cantidad)";
169163

170-
using (SqlConnection connection = new SqlConnection(connectionString))
171-
{
172-
SqlCommand command = new SqlCommand(query, connection);
173-
command.Parameters.AddWithValue("@Titulo", titulo);
174-
command.Parameters.AddWithValue("@Autor", autor);
175-
command.Parameters.AddWithValue("@Cantidad", cantidadDisponible);
176-
177-
try
178-
{
179-
connection.Open();
180-
command.ExecuteNonQuery();
181-
MessageBox.Show("Libro agregado correctamente.");
182-
183-
// Refrescar el DataGridView
184-
btMostrarLibro_Click(sender, e);
185-
}
186-
catch (Exception ex)
187-
{
188-
MessageBox.Show("Error al agregar libro: " + ex.Message);
189-
}
190-
}
191-
}
164+
ConexionBaseDeDatos conexionBaseDeDatos = new ConexionBaseDeDatos();
165+
conexionBaseDeDatos.InsertDatos(titulo, autor, cantidadDisponible);
192166

193-
private void fBiblioteca_Load(object sender, EventArgs e)
194-
{
195-
// Aquí podrías cargar la lista de libros al iniciar la aplicación
196-
}
167+
DataSet datos = conexionBaseDeDatos.ObtenerDatos(true); // true significa muestra el elemento mas reciente de primero en el datagridview
168+
dgvLibro.DataSource = datos.Tables["Libros"];//refresca el datagridview
197169

198-
private void dgvLibro_CellContentClick(object sender, DataGridViewCellEventArgs e)
199-
{
200-
// Evento del DataGridView, si necesitas alguna funcionalidad aquí
201170
}
171+
202172
}
203173
}

Lab#6.csproj.user

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<PropertyGroup>
4+
<ProjectView>ProjectFiles</ProjectView>
5+
</PropertyGroup>
6+
</Project>

Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ static void Main()
1616
{
1717
Application.EnableVisualStyles();
1818
Application.SetCompatibleTextRenderingDefault(false);
19-
Application.Run(new fBiblioteca());
19+
Application.Run(new FBiblioteca());
2020
}
2121
}
2222
}

bin/Debug/Lab#6.exe

2 KB
Binary file not shown.

bin/Debug/Lab#6.pdb

4 KB
Binary file not shown.

0 commit comments

Comments
 (0)