Autor Tema: insert en sql desde c#  (Leído 5016 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado froilan

  • Sv Member
  • ***
  • Mensajes: 333
insert en sql desde c#
« : junio 01, 2012, 09:00:09 pm »
hola comuna!

la cosa es que estoy haciendo un insert en c# pero sin linq ni procedimientos almacenados
este es el error que tengo: Error al convertir el valor del parámetro de TextBox a String.


   protected void btmguardar_Click(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection("Data Source= FROYLAN-PC; Initial Catalog=prueva2; Integrated Security=SSPI;Trusted_Connection=yes");
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = conn;
        cmd.CommandText = "insert into producto(nombre, fecha_ingreso, fecha_vensimiento, precio,cantidad,proveedor) values(@nombre, @fecha_ingreso, @fecha_vensimiento, @precio, @cantidad,@proveedor)";
        cmd.Parameters.Add("@nombre", SqlDbType.VarChar).Value = txtnombre;
        cmd.Parameters.Add("@fecha_ingreso", SqlDbType.Date).Value = txtfecIn.Text;
        cmd.Parameters.Add("@fecha_vensimiento", SqlDbType.Date).Value = txtfecIven.Text;
        cmd.Parameters.Add("@precio", SqlDbType.Money).Value = txtprecio.Text;
        cmd.Parameters.Add("@cantidad", SqlDbType.Int.ToString()).Value = txtcantidad.Text;
        cmd.Parameters.Add("@proveedor", SqlDbType.VarChar).Value = txtproveedor.Text;
       
        cmd.CommandType = CommandType.Text;
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
    }

codigo

Desconectado Radiux

  • Sv Full Member
  • *
  • Mensajes: 939
Re:insert en sql desde c#
« Respuesta #1 : junio 01, 2012, 09:04:58 pm »
hola comuna!

la cosa es que estoy haciendo un insert en c# pero sin linq ni procedimientos almacenados
este es el error que tengo: Error al convertir el valor del parámetro de TextBox a String.


   protected void btmguardar_Click(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection("Data Source= FROYLAN-PC; Initial Catalog=prueva2; Integrated Security=SSPI;Trusted_Connection=yes");
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = conn;
        cmd.CommandText = "insert into producto(nombre, fecha_ingreso, fecha_vensimiento, precio,cantidad,proveedor) values(@nombre, @fecha_ingreso, @fecha_vensimiento, @precio, @cantidad,@proveedor)";
        cmd.Parameters.Add("@nombre", SqlDbType.VarChar).Value = txtnombre;
        cmd.Parameters.Add("@fecha_ingreso", SqlDbType.Date).Value = txtfecIn.Text;
        cmd.Parameters.Add("@fecha_vensimiento", SqlDbType.Date).Value = txtfecIven.Text;
        cmd.Parameters.Add("@precio", SqlDbType.Money).Value = txtprecio.Text;
        cmd.Parameters.Add("@cantidad", SqlDbType.Int.ToString()).Value = txtcantidad.Text;
        cmd.Parameters.Add("@proveedor", SqlDbType.VarChar).Value = txtproveedor.Text;
       
        cmd.CommandType = CommandType.Text;
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
    }

codigo

 cmd.Parameters.Add("@nombre", SqlDbType.VarChar).Value = txtnombre; no sera que se te olvido poner el .text al final  :yao_ming:


OFFTOPIC:

Probablemente es algo que ya sabes, pero te recomiendo encarecidamente que programes usando una lógica de 3 capas y procedimientos almacenados.  :thumbsup:

Desconectado cristiantorres

  • Sv Jr.
  • **
  • Mensajes: 76
  • Bendiciones para todos
    • Blog dedicado a la programacion
Re:insert en sql desde c#
« Respuesta #2 : junio 01, 2012, 09:15:36 pm »
Creo que le problema esta aqui.
Código: [Seleccionar]
cmd.Parameters.Add("@nombre", SqlDbType.VarChar).Value = txtnombre;te falto la propiedad Text.

Puedes ver un ejemplo en mi blog sobre como hago un insert a una bd usando procedimiento almacenado
http://cristiantorresalfaro.blogspot.com/2012/03/insertar-registro-una-bd-desde-un.html
Visita mi Blog C#, Asp.Net, Python y mas...
http://cristiantorresalfaro.blogspot.com
http://codemania.tk

Desconectado Radiux

  • Sv Full Member
  • *
  • Mensajes: 939
Re:insert en sql desde c#
« Respuesta #3 : junio 01, 2012, 09:21:30 pm »
Creo que le problema esta aqui.
Código: [Seleccionar]
cmd.Parameters.Add("@nombre", SqlDbType.VarChar).Value = txtnombre;te falto la propiedad Text.

Puedes ver un ejemplo en mi blog sobre como hago un insert a una bd usando procedimiento almacenado
http://cristiantorresalfaro.blogspot.com/2012/03/insertar-registro-una-bd-desde-un.html

Solo como comentario constructivo: Los datasets no muerden, y te ahorran muchas lineas de codigo, por ejemplo, todas esas lineas de codigo que usaste para insertar algo se transforman en algo como esto

AdaptadorQueries.InsertarPersona(TBNombre.Text, TBApellido.Text, TBPais.Text)
« Última Modificación: junio 01, 2012, 09:23:36 pm por Radiux »

Desconectado froilan

  • Sv Member
  • ***
  • Mensajes: 333
Re:insert en sql desde c#
« Respuesta #4 : junio 01, 2012, 09:32:21 pm »
gracias tenian razon jejeje   :phew: era el .text!!! 

en realidad no tengo conosimiento del tema!!
Citar
Solo como comentario constructivo: Los datasets no muerden, y te ahorran muchas lineas de codigo, por ejemplo, todas esas lineas de codigo que usaste para insertar algo se transforman en algo como esto

AdaptadorQueries.InsertarPersona(TBNombre.Text, TBApellido.Text, TBPais.Text)






Desconectado Juancho

  • The Communiter-
  • *
  • Mensajes: 1311
Re:insert en sql desde c#
« Respuesta #5 : junio 01, 2012, 10:31:11 pm »
Creo que le problema esta aqui.
Código: [Seleccionar]
cmd.Parameters.Add("@nombre", SqlDbType.VarChar).Value = txtnombre;te falto la propiedad Text.

Puedes ver un ejemplo en mi blog sobre como hago un insert a una bd usando procedimiento almacenado
http://cristiantorresalfaro.blogspot.com/2012/03/insertar-registro-una-bd-desde-un.html

Igual como dice Radiux, solo como comentario constructivo sale mas facil con DataAdapter, o con Entity Framework (mucho mejor q los DataAdapter  :wub:)

Si utilizas Entity Framework te quedaria de la siguiente manera:
Código: [Seleccionar]
Dim db as new DBEntities
db.Personas.AddObject(New Persona With {.Nombre TBNombre.Text, .Apellido = TBApellido.Text, .Pais = TBPais.Text})
db.SaveChanges()

Y eso es todo nada mas...!  :thumbsup:
<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>