none
Timestamp RRS feed

  • Pergunta

  • Olá, eu estou tentando pegar o valor de um timestamp de um banco sql mas nao estou conseguindo salvar o valor em algum objeto. Aqui está o código que estou tentando montar. Gostaria de saber o que devo modificar ou como devo fazer para obter e salvar o valor de um timestamp em um objeto.
     using (SqlCommand cmd = new SqlCommand(cmdString, con))
                    {
                        con.Open();                                    
                        SqlDataReader reader = cmd.ExecuteReader();     
    
                        #region Converte o SqlDataReader em um DataTable
    
    
                        while (reader.Read())                           
                        {
                            DataRow dr = dt.NewRow();
                            for (int i = 0; i < reader.FieldCount; i++)
                            {
                                //byte[] dt = reader["dt"] as byte[];
                                dr[i] = reader[i];
                            }
    
                            dt.Rows.Add(dr);
                        }
                        #endregion
    
                        con.Close();
    Desde já muito obrigado.
     
    terça-feira, 3 de março de 2015 18:22

Respostas

  • Tenta dessa forma, estou corrigindo seu código de maneira que preencha corretamente o DataTable
    DataTable dt = new DataTable();
    using (SqlDataAdapter cmd = new SqlDataAdapter(cmdString, con))
        {
         con.Open();
         cmd.Fill(dt);
        }
    con.Close();

    Exemplo de uso:
    //Varre todos os dados obtidos do DataTable
    foreach(DataRow item in dt.Rows)
    {
     MessageBox.Show(item[0].ToString());//zero é o indice que quer mostrar
    }
    





    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel


    terça-feira, 3 de março de 2015 18:42
  • Seu tipo 3 esta como Byte portanto só vai trazer byte[] ,coloca como string ou datetime

    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    terça-feira, 3 de março de 2015 20:37

Todas as Respostas

  • Tenta dessa forma, estou corrigindo seu código de maneira que preencha corretamente o DataTable
    DataTable dt = new DataTable();
    using (SqlDataAdapter cmd = new SqlDataAdapter(cmdString, con))
        {
         con.Open();
         cmd.Fill(dt);
        }
    con.Close();

    Exemplo de uso:
    //Varre todos os dados obtidos do DataTable
    foreach(DataRow item in dt.Rows)
    {
     MessageBox.Show(item[0].ToString());//zero é o indice que quer mostrar
    }
    





    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel


    terça-feira, 3 de março de 2015 18:42
  • bem, obrigado, deu certo. A questão é que quando o campo é timestamp ele não executa nada, sendo qualquer outro tipo ele da certo e eu não to entendendo o porque disso.
    terça-feira, 3 de março de 2015 19:11
  • Como esta sua consulta

    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel. O que esta tentando fazer com o retorno por que independente do campo o select traz todos os dados e coloca no DataTable.


    • Editado Mr. GMSOFT terça-feira, 3 de março de 2015 19:17
    terça-feira, 3 de março de 2015 19:16
  • To tentando obter somente o valor do timestamp. Minha consulta ta assim:

    SELECT DateTimeUpd FROM [SGI00000A].[dbo].[TblDepartamento]

    terça-feira, 3 de março de 2015 19:32
  • Rode isso ai direto no banco de dados e veja se traz alguma informação,verifique se o campo esta com o nome correto tambem

    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    terça-feira, 3 de março de 2015 19:38
  • no banco roda normalmente, aparecem todos os valores desse campo na tabela, mas quando tento acessa no vs não aparece nada, ele simplesmente ignora.
    terça-feira, 3 de março de 2015 19:54
  • Veja se dessa maneira funciona no banco :
    SELECT DateTimeUpd FROM TblDepartamento

    Se o "SELECT * FROM tblDepartamento" funciona nada impede dos demais funcionar, não tem restrição no seu usuario não?

    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    terça-feira, 3 de março de 2015 19:57
  • bom, consegui trazer os dados da tabela pro datatable, mesmo assim o que ele mostra no campo timestamp eh o tipo de dado e não o conteudo. (Ainda utilizando o metodo fill do sqldataadapter)

    desde já muito obrigado pela ajuda!

    • Editado Daniel_AnR terça-feira, 3 de março de 2015 20:03
    terça-feira, 3 de março de 2015 20:02
  • Com certeza seu tipo de dados esta errado, você esta gravando datas como vetor de Byte, como esta esse campo na tabela

    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    terça-feira, 3 de março de 2015 20:08
  • na tabela é um timestamp.
    terça-feira, 3 de março de 2015 20:16
  • Você criou as colunas direto no datatable com o tipo?

    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    terça-feira, 3 de março de 2015 20:23
  • coloquei dessa forma:

    DataTable dt = new DataTable("TblDepartamento");
    
                System.Type tipo1 = System.Type.GetType("System.Int32");
                System.Type tipo2 = System.Type.GetType("System.String");
                System.Type tipo3 = System.Type.GetType("System.Byte[]");
    
                DataColumn coluna1 = new DataColumn("CódigoEmpresa", tipo1);
                DataColumn coluna2 = new DataColumn("CódigoDepartamento", tipo1);
                DataColumn coluna3 = new DataColumn("NomeDepartamento", tipo2);
                DataColumn coluna4 = new DataColumn("DateTimeUpd", tipo3);
    
                dt.Columns.Add(coluna1);
                dt.Columns.Add(coluna2);
                dt.Columns.Add(coluna3);
                dt.Columns.Add(coluna4);
    
    

    terça-feira, 3 de março de 2015 20:33
  • Seu tipo 3 esta como Byte portanto só vai trazer byte[] ,coloca como string ou datetime

    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    terça-feira, 3 de março de 2015 20:37