Documentos de Académico
Documentos de Profesional
Documentos de Cultura
En este captulo, se ilustra la programacin de base de datos utilizando Visual Studio 2010 Existen dos formas de trabajo con base de dato, la forma conectada y la forma desconectada.
Forma Conectada
Se consideran los siguientes puntos: Manejo de la conexin Tratamiento de errores Trabajo con comandos de seleccin Comandos de actualizacin
MANEJO DE LA CONEXIN El objeto Connection se utiliza para conectarse al origen de datos. 1. Definir el NameSpace para acceso a datos: 2. Declarar una variable del tipo OleDbConnection: 3. Definir la cadena de conexin, utilizando la propiedad ConnectionString:
cn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" + @"Data source=c:\Ejercicio1\sucursal.accdb"; 4. Abrir la conexin utilizando el mtodo Open del objeto OleDbConnection: cn.Open(); 5. Cerrar la conexin utilizando el mtodo Close del objeto OleDbConnection: cn.Close(); OleDbConnection cn=new OleDbConnection(); using System.Data; using System.Data.OleDb;
CONTROLANDO ERRORES
Cuando existe algn error al efectuarse la conexin a la base de datos o al realizar alguna consulta, se debe tratar los errores utilizando:
Try .. catch.,. finally
try { cn.Open();
// Otras instrucciones } catch (Exception Ex) { MessageBox.Show("El siguiente error :" + Ex.Message); } finally { if (cn.State == ConnectionState.Open) MessageBox.Show("Conexin efectuada"); else MessageBox.Show("Conexin no se efectuo"); }
TRABAJO CON COMANDOS DE SELECCIN Comandos que devuelven un conjunto de datos (ExecuteReader):
OleDbCommand cmd = new OleDbCommand(); OleDbDataReader Reader; cmd.CommandText = "Select * from sucursal"; cmd.Connection = cn; Reader = cmd.ExecuteReader(); listBoxDatos.Items.Clear(); while (Reader.Read()) { string texto = Reader[0].ToString() + " - " + Reader["nombre"].ToString(); listBoxDatos.Items.Add(texto); }
TRABAJO CON COMANDOS DE ACTUALIZACIN DE DATOS Comando para insertar un registro con el uso de parmetros:
OleDbCommand cmd = new OleDbCommand(); cmd.CommandText = "Insert into sucursal values(@Id_Sucursal,@Nombre_Sucursal)"; cmd.Connection = cn; cmd.Parameters.Add(new OleDbParameter("@Id_Sucursal", OleDbType.Integer)); cmd.Parameters["@Id_Sucursal"].Value = textBox_Id_Sucursal.Text; cmd.Parameters.Add(new OleDbParameter("@Nombre_Sucursal", OleDbType.VarChar, 50)); cmd.Parameters["@Nombre_Sucursal"].Value = textBox_Nombre.Text; try { cmd.ExecuteNonQuery(); MessageBox.Show("Registro insertado"); } catch { MessageBox.Show("Error al insertar"); }
OleDbType.Integer)); cmd.Parameters["@Id_Sucursal"].Value = textBox_Id_Sucursal.Text; cmd.Connection = cn; try { cmd.ExecuteNonQuery(); MessageBox.Show("Registro eliminado"); } catch { MessageBox.Show("Error al eliminar"); }
En el formulario 1:
public static OleDbConnection cn=new OleDbConnection(); public static Int32 codigo; private void button1_Click(object sender, EventArgs e) { Form2 frm2=new Form2(); frm2.ShowDialog(); textBox1.Text = codigo.ToString (); }
En el formulario 2:
private void textBox1_TextChanged(object sender, EventArgs e) { if (textBox1.Text=="" ) { dataGridView1.DataSource = ""; return; } OleDbCommand cmd = new OleDbCommand(); cmd.CommandText = "Select * from sucursal where nombre like @nombre";
cmd.Parameters.Add(new OleDbParameter("@nombre", OleDbType.VarChar,50)); cmd.Parameters["@nombre"].Value = textBox1.Text +"%"; cmd.Connection = FrmTema.cn; OleDbDataReader Reader; Reader = cmd.ExecuteReader(); DataTable dt = new DataTable(); dt.Load(Reader); dataGridView1.DataSource = dt; }
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { int filaSeleccionada = dataGridView1.CurrentRow.Index; FrmTema.codigo = Convert.ToInt32(dataGridView1. Rows[filaSeleccionada].Cells[0].Value); this.Close(); }
void Cargar_ComboBox() { OleDbCommand cmd = new OleDbCommand(); OleDbDataReader Reader; cmd.CommandText = "Select * from sucursal"; cmd.Connection = cn; Reader = cmd.ExecuteReader(); DataTable dt = new DataTable(); dt.Load(Reader); comboBox1.DataSource = dt; comboBox1.DisplayMember = "nombre"; comboBox1.ValueMember = "Id_Sucursal"; }
Para mostrar el valor de un checkbox: private void checkBox1_CheckedChanged(object sender, EventArgs e) { MessageBox.Show(checkBox1.Checked.ToString()); }