-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathVB.NET_CRUD.vb
212 lines (195 loc) · 7.82 KB
/
VB.NET_CRUD.vb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
'Librerías
Imports System.Data.SqlClient 'SQL Server
Imports System.Data.OleDb 'Access (2003/2007-2013)
Imports System.Data.SQLite 'SQLite
Imports MySqlConnector 'MySqlConnector Nuget Package
Imports System.IO 'Usar MemoryStream
Module CRUD
'ConecctionString: (https://www.connectionstrings.com/)
'la cadena de conexión o ConecctionString deberá estar entre las comillas
'(Directorio) será cambiada por |DataDirectory|\ si es una base de datos local
'
'SQL Server LocalDB:
'Data Source=(LocalDB)\MSSQLLocalDB; AttachDbFilename=|DataDirectory|\[Database].mdf; Integrated Security=True
'
'Access
'2003
'Provider=Microsoft.Jet.OLEDB.4.0; Data Source=(Ubicación)\[Database].mdb
'Provider=Microsoft.Jet.OLEDB.4.0; Data Source=(Ubicación)\[Database].mdb; Jet OLEDB:Database Password=[Password]
'2007-2013
'Provider=Microsoft.ACE.OLEDB.12.0; Data Source=(Ubicación)\[Database].acCRUD
'Provider=Microsoft.ACE.OLEDB.12.0; Data Source=(Ubicación)\[Database].acCRUD; Jet OLEDB:Database Password=[Password]
'
'SQLite
'Data Source=(Ubicación)\[Database].db; Version=3
'
'MySQL
'Server=[ServerAddress]; Database=[Database]; Uid=[User]; Pwd=[Password];
'Server=[ServerAddress]; Port=[#Port000]; Database=[Database]; Uid=[User]; Pwd=[Password];
Private Cadena As String = "ConnectionString"
Private Conectar As New SqlConnection(Cadena)
Public EsCon, EsLec As Boolean
'Iniciar y probar conexión con base de datos
Sub Conexion()
EsCon = False
While EsCon = False
Try
Conectar.Open()
EsCon = True
Conectar.Close()
Catch ex As Exception
EsCon = False
If MessageBox.Show(ex.Message & vbCrLf & "" & vbCrLf & "¿Desea reintentar la conexión?", "Error", MessageBoxButtons.OKCancel) = vbCancel Then
End
End If
End Try
End While
End Sub
'Proceso para hacer consultas de datos SELECT
'Utilizable para hacer login con usuario y contraseña almacenada en base de datos
Sub Leer(ByVal SQL As String)
Conectar.Open()
Try
Dim CMD As New MySqlCommand(SQL, Conectar)
Dim DR As MySqlDataReader
DR = CMD.ExecuteReader
If DR.HasRows Then
EsLec = True
Else
EsLec = False
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Conectar.Close()
End Sub
'Proceso para consultas SQL: SELECT, mostrar datos en un DataGridView
Sub Consulta(ByVal Tabla As DataGridView, ByVal SQL As String)
Try
Dim DA As New SqlDataAdapter(SQL, Conectar)
Dim DT As New DataTable
DA.Fill(DT)
Tabla.DataSource = DT
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
'Proceso para consultas SQL: SELECT, rellenar un ComboBox
Function Rellenar(ByVal SQL As String)
Dim DT As New DataTable
Try
Dim DA As New SqlDataAdapter(SQL, Conectar)
DA.Fill(DT)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Return DT
End Function
'Proceso para consultas SQL: INSERT, UPDATE, DELETE y TRUNCATE TABLE
Sub Operaciones(ByVal Tabla As DataGridView, ByVal SQL As String)
Conectar.Open()
Try
Dim CMD As New SqlCommand(SQL, Conectar)
CMD.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Conectar.Close()
End Sub
'Proceso para Consultas SQL: INSERT, UPDATE de imágenes en base de datos
Sub WorkImgs(ByVal SQL As String, ByVal Imagen As PictureBox)
Dim MS As New MemoryStream
Imagen.Image.Save(MS, Imagen.Image.RawFormat)
Dim Imagenes() As Byte = MS.GetBuffer
Dim CMD As New SqlCommand(SQL, Conectar)
CMD.Parameters.AddWithValue("@Imagen", Imagenes)
Try
Conectar.Open()
CMD.ExecuteNonQuery()
Conectar.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
Conectar.Close()
End Try
End Sub
End Module
'Procesos para consultas SQL en Forms
Public Class [Forms]
'Probar conexión
Sub ConTest()
Conexion()
End Sub
'Crear tablas en caso de que estas no existan
Sub CreTable()
SQL = "CREATE TABLE IF NOT EXISTS [Tabla] (([Columna1] [TipoDato](Longitud) [NULL/NOT NULL], [ColumnaN] [TipoDato](Longitud) [NULL/NOT NULL], ...);"
Operaciones([DataGridView], SQL)
End Sub
'Variables que almacenan las respectivas consultas SQL
Dim SQL As String
'Proceso para consultas SELECT en DataGridView
Sub Mostrar()
SQL = "SELECT * FROM [Tabla]"
Consulta([DataGridView], SQL)
End Sub
'Consultas SQL: SELECT
'Usar CAST([Columna] AS VARCHAR) para busquedas =/LIKE con valores numéricos
'* | SELECT * FROM [Tabla]
'[Columna] | SELECT [Columna] FROM [Tabla]
'= | SELECT * FROM [Tabla] WHERE ([Columna] = '" & [Dato] & "')"
'LIKE | SELECT * FROM [Tabla] WHERE ([Columna] LIKE '%" & [Dato] & "%')"
'ASC/DESC | SELECT * FROM [Tabla] ORDER BY [Columna] ASC/DESC
'COUNT() | SELECT COUNT(*) FROM [Tabla]
'COUNT() | SELECT COUNT([Columna]) FROM [Tabla]
'MAX()/MIN() | SELECT MAX([Columna]) FROM [Tabla]
'Proceso para rellenar ComboBox
Sub RelleCBx()
SQL = "SELECT [Columna] FROM [Tabla] ORDER BY [Columna] ASC/DESC"
Try
Dim DT As New DataTable
DT = Rellenar(SQL)
[ComboBox].DataSource = DT
[ComboBox].DisplayMember = "[Columna]"
[ComboBox].SelectedIndex = 0
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
'Proceso para consultas INSERT
Private Sub Agregar()
'Consulta para guardar información en base de datos (ordinarios)
SQL = "INSERT INTO [Tabla] ([Columna1]), [ColumnaN]) SELECT " & [Dato1] & ", ..." & [DatoN] & ""
Operaciones([DataGridView], SQL)
'Consulta para guardar información en base de datos (imágenes)
SQL = "INSERT INTO [Tabla] ([Columna1]), [ColumnaN]) VALUES (" & [Dato1] & ", ..." & [DatoN] & "', @Imagen)"
WorkImgs(SQL, [PictureBox])
End Sub
'Usar '' para los datos de String: ", " & [Dato1] & "', "
'Proceso para consultas UPDATE
Private Sub Actualizar()
'Consulta para actualizar información en base de datos (ordinarios)
SQL = "UPDATE [Tabla] SET [Columna1]=" & [Dato1] & ", [ColumnaN]=" & [DatoN] & " WHERE ([Criterio] = " & [Criterio] & ")"
Operaciones([DataGridView], SQL)
'Consulta para actualizar información en base de datos (imágenes)
SQL = "UPDATE [Tabla] SET [Columna1]=" & [Dato1] & ", [ColumnaN]=" & [DatoN] & " [Columna]= @Imagen WHERE ([Criterio] = " & [Criterio] & ")"
WorkImgsSavImg(SQL, [PictureBox])
End Sub
'Proceso para consultas DELETE
Private Sub Eliminar()
SQL = "DELETE FROM [Tabla] WHERE ([Criterio] = " & [Criterio] & ")"
Operaciones([DataGridView], SQL)
'Consulta para eliminar información en base de datos (imágenes)
WorkImgs(SQL, [PictureBox])
End Sub
'Proceso para consultas TRUNCATE TABLE
Private Sub Truncar()
SQL = "TRUNCATE TABLE [Tabla]"
Operaciones([DataGridView], SQL)
End Sub
'Proceso para consultas TRUNCATE TABLE en SQLite
Private Sub TruncarSQLite()
SQL = "DROP TABLE [Tabla]"
Operaciones([DataGridView], SQL)
SQL = "CREATE TABLE [Tabla] ([Columna1] [TipoDato](Longitud) [NULL/NOT NULL], [ColumnaN] [TipoDato](Longitud) [NULL/NOT NULL], ...);"
Operaciones([DataGridView], SQL)
End Sub
End Class