none
DataReader.GetByte Falha no Asp.net RRS feed

  • Pergunta

  • Estou desenvolvendo uma aplicação em asp.net que acessa uma base AS400, tenho um campo com valores acentuados. Com windows forms eu acesso ODBC e DataReader e consigo converter usando encoding e DataReader.GetBytes(). Porém essa mesma base, mesmo campo quando acesso via asp.net o DataReader.Getbytes gerar uma exceção. A única diferente está entre Windows Forms e Asp.net
    quinta-feira, 23 de maio de 2013 12:25

Todas as Respostas

  • certifique se que o objeto de conexão esta aberto pois o datareader só funciona nessa condição caso não resolva coloca a exceção que é lançada pelo sistema e o trecho do codigo aonde ocorre a exceção.

    caso a resposta seje util não deixe de marca-la.

    quinta-feira, 23 de maio de 2013 22:15
  • ....a conexao está aberta, e estou lendo outros 40 campos....

    while (dr.Read())
    {
     f5676Row.TELOTE =  ConverterString(dr, 15);
    }

    ....

    public string ConverterString(System.Data.Odbc.OdbcDataReader dr, int columnIndex)
    {
         try
         {
          long bytesize = dr.GetBytes(columnIndex, 0, null, 0, 0); <------neste gera a exceção não é uma sequencia de bytes válida.....

            byte[] dados = new byte[bytesize];
            long bytesread = 0;
            int chunkSize = 1000;
            int curpos = 0;
            System.Text.Encoding enc = System.Text.Encoding.GetEncoding(37);
            while (bytesread < bytesize)
            {
             bytesread += dr.GetBytes(columnIndex, curpos, dados, curpos, chunkSize);
                    curpos += chunkSize;
            }
            return enc.GetString(dados);
         }
         catch
         {
      return dr.GetString(columnIndex);
          }
    }

    MAS O MAIS INTERESSANTE EM WINDOWS FORMS FUNCIONA, ERRO QUANDO USA DDL EM ASP.NET.

    sexta-feira, 24 de maio de 2013 04:10
  • certifique se que o objeto de conexão esta aberto pois o datareader só funciona nessa condição caso não resolva coloca a exceção que é lançada pelo sistema e o trecho do codigo aonde ocorre a exceção.

    caso a resposta seje util não deixe de marca-la.


    0

    ....a conexao está aberta, e estou lendo outros 40 campos....

    while (dr.Read())
    {
     f5676Row.TELOTE =  ConverterString(dr, 15);
    }

    ....

    public string ConverterString(System.Data.Odbc.OdbcDataReader dr, int columnIndex)
    {
         try
         {
          long bytesize = dr.GetBytes(columnIndex, 0, null, 0, 0); <------neste gera a exceção não é uma sequencia de bytes válida.....

            byte[] dados = new byte[bytesize];
            long bytesread = 0;
            int chunkSize = 1000;
            int curpos = 0;
            System.Text.Encoding enc = System.Text.Encoding.GetEncoding(37);
            while (bytesread < bytesize)
            {
             bytesread += dr.GetBytes(columnIndex, curpos, dados, curpos, chunkSize);
                    curpos += chunkSize;
            }
            return enc.GetString(dados);
         }
         catch
         {
      return dr.GetString(columnIndex);
          }
    }

    MAS O MAIS INTERESSANTE EM WINDOWS FORMS FUNCIONA, ERRO QUANDO USA DDL EM ASP.NET.

    sexta-feira, 24 de maio de 2013 04:12
  • faz isso para ver o resultado q esta sendo retornado

    var valor = dr[15]; //Provavelmente esta vindo null

    terça-feira, 28 de maio de 2013 12:29