Об изображении Sybase - PullRequest
       29

Об изображении Sybase

1 голос
/ 01 декабря 2009

Преобразуется ли тип данных изображения в байтовый массив в sybase? Я применяю веб-сервис для получения набора данных в sybase (тип данных изображения). Я использую byte [], чтобы получить возврат веб-сервиса. Затем я использую «response.binarywrite (byte [])», чтобы показать изображение. (ASP.NET C #) Но есть проблема искажения изображения (когда я фокусируюсь на изображении, некоторые точки пропускаются). Я не знаю почему Кто-нибудь знает, что тип данных изображения в sybase может быть перенесен в байтовый массив?

Исходное изображение

Искаженное изображение

Система:

1 Sybase

    Sybase db: 11.9.2

    Adaptive server enterprise 12.5.1

    Sybase.Data.AseClient:1.0.152.0

2 ASP.NET C # (Visual Studio 2008)

3 IE6

1 Ответ

3 голосов
/ 15 декабря 2009

Наконец-то я нашел ответ. Причиной этой проблемы является ограничение доступа к размеру изображения в Sybase. Когда размер изображения превышает 37 Кбайт, на выходе все еще остается 37 Кбайт. Поэтому я пропускаю несколько байт на этом этапе. Решение заключается в том, что вам нужно установить параметр для получения всех данных. Частичные коды показаны ниже:

    [WebMethod]
    public byte[] Image(string c, string r)
    {
       //check input ..
        ConnectionDatabase connbaseloc = new ConnectionDatabase();
        AseConnection conn1 = null;
        AseCommand cmd1 = null;
        string sqlstr1 = "";
        AseDataReader reader = null;
        byte[] Imagebytes = null;
        try
        {
            using (conn1 = connbaseloc.Odbcconn_xxx())
            {
                string setTextCmd = " SET TEXTSIZE 130000"; //set parameter
                cmd1 = new AseCommand(setTextCmd, conn1);
                cmd1.ExecuteNonQuery();
                sqlstr1 = "select ....";
                cmd1 = new AseCommand(sqlstr1, conn1);
                cmd1.CommandText = sqlstr1;
                reader = cmd1.ExecuteReader();
                while (reader.Read())
                {
                    Imagebytes = (byte[])reader["Image"];
                }
            }
        }
        catch (Exception e)
        {
            //do something
        }
        finally
        {
            if (conn1 != null) conn1.Close();
        }

        return Imagebytes;
    }

Значение параметра зависит от вашего максимального размера изображений.

...