Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: SRVAM en 2 Enero 2010, 15:52 pm



Título: [C# codigo] insertar registro en base de datos
Publicado por: SRVAM en 2 Enero 2010, 15:52 pm
buenas amigos. me gustaria pediros un favor, y es que a ver si podeis revisar mi codigo y decirme que hago mal.
lo que quiero es insertar un registro en una base de datos. utilizo sql server 2005 por si interesa.

lo que quiero hacer, es que al darle al insertar se me abra un formulario con los campos de la tabla para rellenarlos y luego insertarlos. pero a la hora de hacer la sentencia para insertar el nuevo registro no se como hacerlo y llevo unos dias que no encuentro la forma de hacerlo :(

espero que podais ayudarme. aqui os dejo todo el codigo.

FORM 1

Código:
[code=csharp]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;


namespace mantenimiento_BD
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public SqlConnection conn = new SqlConnection();
        public SqlDataAdapter DAdatos_personales;
        DataTable DTdatos = new DataTable();
        public string stringconect = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\rafa2\\Desktop\\programas C#\\mantenimiento BD\\mantenimiento BD\\PruebasRafa.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                conn.ConnectionString =stringconect;
                conn.Open();
                DAdatos_personales = new SqlDataAdapter("select * from Datos_personales", conn);
                DTdatos.Clear();
                DAdatos_personales.Fill(DTdatos);
                dataGridView1.DataSource = DTdatos;
                conn.Close();
               
            }
            catch
            {
                MessageBox.Show("Se ha producido un error al coenctar con la base de datos", "Error de conexión", MessageBoxButtons.OK, MessageBoxIcon.Error);
                this.Dispose();
            }
        }

        private void btn_insert_Click(object sender, EventArgs e)
        {
            Form2 campos = new Form2();
            campos.Show();
            dataGridView1.Update();
        }

        private void btn_update_Click(object sender, EventArgs e)
        {

        }

        private void btn_delete_Click(object sender, EventArgs e)
        {

        }

    }
}
[/code]

FORM2

Código:
[code=csharp]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;

namespace mantenimiento_BD
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        Form1 principal = new Form1();
        SqlCommand añadir = new SqlCommand();

        private void button1_Click(object sender, EventArgs e)
        {

            Form1 principal = new Form1();
            principal.conn.ConnectionString = principal.stringconect;
            principal.conn.Open();
            añadir.Connection = principal.conn;
            añadir.CommandText = "insert into Datos_Personales values (" + textBox1.Text + ", " + textBox2.Text + ", " + textBox3.Text + ", " + textBox4.Text + ", " + textBox5.Text + ", " + textBox6.Text + ")";
            añadir.CommandType = CommandType.StoredProcedure;
            añadir.ExecuteNonQuery();
            principal.conn.Close();
            this.Close();
        }
    }
}
[/code]


espero que podais ayudarme. muchas gracias y saludos a todos


Título: Re: [C# codigo] insertar registro en base de datos
Publicado por: raul338 en 2 Enero 2010, 16:07 pm
Código
  1. Form2 campos = new Form2();
  2. campos.Show();
  3. dataGridView1.Update();
  4.  

cambialo por:

Código
  1. Form2 campos = new Form2();
  2. if (campos.Show() == DialogResult.OK)
  3.   dataGridView1.Update();
  4.  

Asi si en el formulario acepto, se recarga los registros, sino, no hace nada  ;D

Código
  1. añadir.CommandText = "insert into Datos_Personales values (" + textBox1.Text + ", " + textBox2.Text + ", " + textBox3.Text + ", " + textBox4.Text + ", " + textBox5.Text + ", " + textBox6.Text + ")";
  2. añadir.CommandType = CommandType.StoredProcedure; // WTF!!!
  3. // Agregar esto
  4. this.DialogResult = DialogResult.OK;
  5. this.Close();
  6.  

Procedimiento almacenado y una consulta  :huh:
jeje, la linea de procedimiento almacenado deberias borrarla, por lo demas esta bien. Aunque debes seguir aprendiendo (ado.net, para evitar SQL injection  ;))


Título: Re: [C# codigo] insertar registro en base de datos
Publicado por: SRVAM en 3 Enero 2010, 12:23 pm
buenas raul338.

hice lo que me dijiste, y al ejecutar el metodo añadir.ExecuteNonQuery() me aparece el siguiente error al agregar el campo textbox2.text, cuyo contenido corresponde al campo Nombre que esta definido como varchar(15)

No se controló System.Data.SqlClient.SqlException

Message="El nombre \"rafa\" no es válido en este contexto. Las expresiones válidas son constantes, expresiones de constantes y, en algunos contextos, variables. No se permiten nombres de columna."
 

y donde estaba el update del datagrid he añadido una consulta de toda la tabla.

a ver si podeis ayudarme con el error.

saludos


Título: Re: [C# codigo] insertar registro en base de datos
Publicado por: raul338 en 3 Enero 2010, 15:07 pm
Código
  1. añadir.CommandText = "insert into Datos_Personales values (" + textBox1.Text + ", " + textBox2.Text + ", " + textBox3.Text + ", " + textBox4.Text + ", " + textBox5.Text + ", " + textBox6.Text + ")";

En la consulta, te falto las comillas de los valores (INSERT INTO tabla VALUES ( " valor", "valor", etc...) .... cosa que ahi no estas poniendo :P

Código
  1. añadir.CommandText = "insert into Datos_Personales values ('" + textBox1.Text + "', '" + textBox2.Text + "', '" + textBox3.Text + "', '" + textBox4.Text + "', '" + textBox5.Text + "', '" + textBox6.Text + "')";

Ahi te deberia de andar ;D


Título: Re: [C# codigo] insertar registro en base de datos
Publicado por: SRVAM en 3 Enero 2010, 23:18 pm
uf es verdad!!! que fallo mas tonto!!! no me di cuenta raul338  :rolleyes: muchas gracias por verme el error colega  ;-)

un saludo y gracias de nuevo ^^


Título: Re: [C# codigo] insertar registro en base de datos
Publicado por: El condepimp en 19 Enero 2010, 17:33 pm
hey me podrias mostrar los dos formularos que hicistes de este codigo porque estoy estudiando tu codigo y ya con los formularios creo que le voy a entender xfa soy nuevo en esto y quiero aprender.


Título: Re: [C# codigo] insertar registro en base de datos
Publicado por: SRVAM en 20 Enero 2010, 08:58 am
el formulario no tiene nada, solo un DataGridView y 3 botones jaja

luego ya los textbox necesarios para introducir un registro a tu base de datos ;)