none
recoger un dato por teclado y insertarlo en una tabla de bd

    Question

  • hola, mi duda es que quiero recoger un dato por teclado(por ejemplo una identificacion que le pido al usuario que introduzca)y de alli guardarlo en una tabla que he creado yo manualmete y que ya la tengo definida con sus atributos, entonces yo con el dato que recogere por teclado quiero ir actualizando solo el atributo de la tabla  que habre llamado ident
    he estado buscando ejemplos por internet pero no encuentro casi nada, muy poca informacion de hacer esto con c# ademas estoy trabajando con  visual basic c# express edition 2008. espero que alguien podieraa darme alguna pista




    el codigo que tengo es :


    console.writeline("introduzca la identificacion:");
    string ident;
    ident=consolereadline();





    lo que tambien quieria preguntar es si es necesario seguir los pasos para establecer la conexion con l BD  en este metodo que se hacen si estamos realizando una consulta normal.


    un saludo y muchas gracias 
    Tuesday, September 29, 2009 9:06 PM

Answers

  • hola

    en realidad deberia ser algo asi


    Console.Writeline("introduzxa el dato:")
    string codigo;
    codigo=Console.ReadLine();
    Console.WriteLine("el dato introducido es:" +codigo);


    eng= new SqlCeConnection(StringConexion);
    eng.Open();
    string sql = string.Format("insert into tablita(dato,not,tiem) values ({0},'','')", codigo);

    cmd.CommandText = sql;
    cmd.CommandType = CommandType.Text;

    cmd.ExecuteNonQuery();



    Nota, en este caso el campo dato verifica que sea del tipo numerico,sino debes encarrar a el valor {0} entre comillas simples '{0}'

    lo que no vi ademas es donde instancias al objeto cmd, o sea recuerda que debes crearlo y ademas decirle cual es el objeto SqlCeConnection que debe usar

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, September 30, 2009 4:39 PM
  • hola

    si me refieria desde e VS, como tu db del tipo Sql compact, no tienes una tool para poder editarla, por eso te decia que desde el VS verificar o hacer un queery verificando sino estan los datos

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Thursday, October 01, 2009 5:11 PM

All replies

  • hola

    Para la operación que quieres realizar seguramente necesites conectarte a la db, lo que no ahs comentado es lo ams importan de que base de dato se trata?
    es Ms Access, Sql Server ?


    si se trata de Access seguro estro link te aporten una buen ayuda:

    algunos por ahí referencias a una pagina web, pero la parte de la conexión es idéntica no importa desde donde provenga la información

    o sea lo que debes hacer es tomar el valor que introduce el usuario y armar la consulta sql de insert, por supuesto luego ejecutarla con el objeto Command 

    INSERT INTO <tabla> ("<campo>") VALUES (<valor>)



    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, September 30, 2009 12:03 AM
  • pos estoy trabajdano con sql compact 3.5  es decir el que esta integrado en visual basic c# studio express  2008


    la cadena de conexion normal que tengo yo para otras consultas es :


      eng= new SqlCeConnection(StringConexion);
                    Console.WriteLine("selecionando filas de una BD");
                   /// string query = ("select IDACT,ID FROM ordenNot order by IDACT,ORDEN");
                     SqlCeCommand cmd = new SqlCeCommand(query, eng);
                     SqlCeDataAdapter adp = new SqlCeDataAdapter(cmd);
                     DataSet ds = new DataSet();

     si lo quiero hacer es ir recogiendo un dato por teclado y de alli insertarlo en mi tabla de la bd, pero que al introducir un segundo dato por teclado al guardarlo en la tabla , que no me borre el anterior sino que me lo escriba en una segunda fila, nose si me he explicado muy bien un saludo.
    Wednesday, September 30, 2009 10:34 AM
  • hola

    Si me imagine que quieres ir insertando la informacion en la db.

    es por eso que te comentaba lo del INSERT ,asi cmo has realizado el SELECT que muestras en el codigo que posteas, debes hacer el INSERT, pero en esta opertunidad no puedes utilziar DataSet, sino que debes ejecutar el metodo ExecuteNonQuery

    Este metodo es utilizado para las sentencias sql se actualizacion, ya se Insert o Update


    Cuando usar ExecuteNonQuery o ExecuteScalar



    en el ejemplo seguro veras que usa Stored procedure, pero en tu caso puedes poner la consulta como string tal como lo haces en el ejemplo que usas.
    Por ahi tambien veras que usan los objetos SqlCommand, y demas, bueno si reemplzas el Sql por SqlCe el restod e los nombres son equivalente ya que todo implementa ado.net

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, September 30, 2009 12:30 PM
  • podria ponerme alguien algun ejemplo del procedimiento  de recoger un dato por el teclado y de insertarlo en un campo en  una tabla  utilizando como he puesto mas arriba sql  compact 3.5(incluido en visual c express edition 2008) gracias.


    Wednesday, September 30, 2009 2:59 PM
  • el codigo que yo tengo y que creo con el me deberia de poner el dato en la tabla es:




    Console.Writeline("introduzxa el dato:")
    string codigo;
    codigo=Console.ReadLine();
    Console.WriteLine("el dato introducido es:" +codigo);


    eng= new SqlCeConnection(StringConexion);
    eng.Open();
    string query=(insert into tablita(dato,not,tiem) values ('+codigo',"","")");
    cmd.Execute.Non.Query();


    se supone que con esto tengo que ser capaz de insertar el dato recogido por el teclado que es codigo en  la columna de la tabla llamada dato no???  recogo el numero del teclado y me da el error : ERROR DE SINTAXIS AL CONVERTIR UN TIPO DE DATOS A OTRO. [EXPRESSION=]

    NO SE CONTROLO SQL CE EXCEPTION
    Wednesday, September 30, 2009 3:16 PM
  • hola

    en realidad deberia ser algo asi


    Console.Writeline("introduzxa el dato:")
    string codigo;
    codigo=Console.ReadLine();
    Console.WriteLine("el dato introducido es:" +codigo);


    eng= new SqlCeConnection(StringConexion);
    eng.Open();
    string sql = string.Format("insert into tablita(dato,not,tiem) values ({0},'','')", codigo);

    cmd.CommandText = sql;
    cmd.CommandType = CommandType.Text;

    cmd.ExecuteNonQuery();



    Nota, en este caso el campo dato verifica que sea del tipo numerico,sino debes encarrar a el valor {0} entre comillas simples '{0}'

    lo que no vi ademas es donde instancias al objeto cmd, o sea recuerda que debes crearlo y ademas decirle cual es el objeto SqlCeConnection que debe usar

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, September 30, 2009 4:39 PM
  • Console.Writeline("introduzxa el dato:")
    string codigo;
    codigo=Console.ReadLine();
    Console.WriteLine("el dato introducido es:" +codigo);


    eng= new SqlCeConnection(StringConexion);
    eng.Open();
    string sql = string.Format("insert into tablita(dato,not,tiem) values ('{0}','','')", codigo);
    SqlCeCommand cmd =new SqlCeCommand(sql,eng);

    cmd.CommandText = sql;
    cmd.CommandType = CommandType.Text;

    cmd.ExecuteNonQuery();
     



    el fallo que me da es el mismo que antes me dice:  error de sitaxis al converir de un tipo de datoa  a otro y que no se controlo SqlCeEXCEPTION
    Wednesday, September 30, 2009 5:23 PM
  • hola

    pero has verificado los tipos de datos de tu tabla ?

    son todos del tipo varchar, o sea acepatan valores alfa-numericos ?

    veo que has puesto el {0} entre comillas simples, entocnes el codigo acepta numero y letras ?

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, September 30, 2009 5:42 PM
  • mis atributos de la tabla son de este tipo:



    dato -nvarchar

    not-nvarchar
    tiem-numeric 



    si supone que el dato pueda estar compuesto por numeros y letras
    Wednesday, September 30, 2009 5:50 PM
  • hola

    pero dices que "tiem" es numeric en ese caso no puedes poner las comillas finales

    string sql = string.Format("insert into tablita(dato,not,tiem) values ('{0}','',0 )", codigo);


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, September 30, 2009 6:07 PM
  • clarooo es verdad, no me da ningun error , pero he comprobado y no me ha  escrito el dato en la tabla, es muy extraño no?????
    Wednesday, September 30, 2009 6:16 PM















  • pense que igual no me sale el dato insertado en la tabla por no haber cerado la conexion, ya que hasta que no se cierra no se deben de guardar los cambios, pero al cerrarla sigue igual, si voy a mostrar datos de la tbla no se ha insertado nada 























    Wednesday, September 30, 2009 9:34 PM
  • hola

    Si la verdad es extraño, si dices que se ejecuta correctamente, sin errores no veo porque no aparece en la tabla el registro.

    - por ahí parece muy obvia la pregunta pero has verificado correctamente el contenido de la tabla, me refiereo desde el "Solution Explroer" del VS ?


    un comentario:


    eng= new SqlCeConnection(StringConexion);
    eng.Open();
    string sql = string.Format("insert into tablita(dato,not,tiem) values ('{0}','',0)", codigo);
    SqlCeCommand cmd =new SqlCeCommand(sql,eng);

    //cmd.CommandText = sql;
    //cmd.CommandType = CommandType.Text;

    cmd.ExecuteNonQuery();
     
    eng.Close();

    no hace falta poner la propiedad CommandText si creas el objeto command directo con el parametro que le pasa el query, y creo que el CommadType tampoco pero igual puede probarlo

    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Thursday, October 01, 2009 12:38 AM
  • a que te refieres de si he  verificado correctamente el contenido de la tabla, me refiereo desde el "Solution Explroer" del VS????
    Thursday, October 01, 2009 5:27 AM
  • me puede decir alguien a que se puede deber esto de que todo este bien , que no me  de ningun fallo y ke no escriba el dato en la tabla de la bd??
    es que estoy muy desesperada por buskar a ke se puede deber esto.
    un saludo muchas gracias
    Thursday, October 01, 2009 4:43 PM
  • hola

    si me refieria desde e VS, como tu db del tipo Sql compact, no tienes una tool para poder editarla, por eso te decia que desde el VS verificar o hacer un queery verificando sino estan los datos

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Thursday, October 01, 2009 5:11 PM
  • yo puedo ver los datos que tengo en las tablas, en la opcion de mostrar datos de la tabla y veo que me sale una fila con los tres atributos que tengo a  null, si depuro y actualizo nada vuelve a salirme solo null, pero se supone que se tiene ke almacenar el dato en la tabla no???
    Thursday, October 01, 2009 5:53 PM
  • hola se le ocurre a alguien poruqe me puede estar pasando esto¿¿¿¿
    Friday, October 02, 2009 6:47 AM