From: Arne Vajhøj on
On 31-07-2010 20:50, Joe Cool wrote:
> On Jul 31, 8:41 pm, Arne Vajh�j<a...(a)vajhoej.dk> wrote:
>> On 31-07-2010 20:39, Joe Cool wrote:
>>> On Jul 31, 8:37 pm, Arne Vajh�j<a...(a)vajhoej.dk> wrote:
>>>> On 31-07-2010 20:29, Joe Cool wrote:
>>
>>>>> On Jul 31, 8:02 pm, Arne Vajh�j<a...(a)vajhoej.dk> wrote:
>>>>>> On 31-07-2010 19:36, Joe Cool wrote:
>>
>>>>>>> I am cross posting this request for help in both the C#,NET and the
>>>>>>> SQLServer newsgroups in he hope that some reader of one these
>>>>>>> newsgroups can offer some help.
>>
>>>>>>> I am well aware that the image datatype (as well as others) are being
>>>>>>> phased out in some future version of SQL Server. For that reason, in
>>>>>>> all of my personal C#.NET projects that store images use the
>>>>>>> varbinary(max) datatype.
>>
>>>>>>> I am in the process of converting a VB.NET project that I use for
>>>>>>> consulting work with a former (and hopefully soon to be repeat)
>>>>>>> employer tp C#.NET. When originally designed, their software was based
>>>>>>> on SQL7. Currently their software supports SQL2005. One key table in
>>>>>>> their database is a table of images and (not sure if it still does)
>>>>>>> but legacy databases utilize the image datatype to store images. With
>>>>>>> SQL7 I used a SQL command line utility called TEXTCOPY to extract the
>>>>>>> binary content of image columns to a JPG file.
>>
>>>>>>> This utility needs to be able to extract these images to external
>>>>>>> files even for legacy databases that may still use the image datatype.
>>>>>>> But I find that the technique I use to extract images from a
>>>>>>> varbinary(max) column doesn't work for image datatypes. And I see that
>>>>>>> SQL2005, while it still supports image datatype, the TEXTCOPY utility
>>>>>>> is nowhere to be found.
>>
>>>>>>> Any ideas on how to extract image data types from a SQL2005 database
>>>>>>> with C#.NET?
>>
>>>>>> Have you tried the obvious: SqlConnection, SqlCommand, SELECT,
>>>>>> ExecuteReader, SqlDataReader og l�se kolonnen som byte[] ?
>>
>>>>> Here is what I am using that works with varbinary(max) datatype
>>>>> columns.
>>
>>>>> SqlCommand cmd;
>>>>> SqlDataReader rdr;
>>>>> DataTable dataTable;
>>
>>>>> cmd = new SqlCommand("select imagecolumn, linkcolumn from images",
>>>>> cn)'
>>>>> rdr = cmd.ExecuteReader();
>>>>> dataTable.Load(rdr);
>>
>>>> Drop the data table and try:
>>
>>>> while(rdr.Read())
>>>> {
>>>> byte[] image = (byte[])rdr[0];
>>>> string link = (string)rdr[1];
>>>> // process image and link
>>
>>>> }
>>
>>> Umm, so are you saying that while the datatable works with a
>>> varbinary(max) datatype, for an image datatype I should drop the
>>> datatable and just use a data reader?
>>
>> I don't know if the data table is the problem.
>>
>> I know that the reader will work.
>>
>> And according to your description, then you don't need
>> the data table.
>>
>> So it is worth a try.
>
> The only reason I was trying to use a data table is because I am using
> a support class library (that I also wrote) that returns data using
> just a datatable. I suppose I can enhance it to also support returning
> data with a data reader.

What is the problem when you try getting the image with the
current code?

Arne
From: Joe Cool on
On Jul 31, 9:21 pm, Arne Vajhøj <a...(a)vajhoej.dk> wrote:
> On 31-07-2010 20:50, Joe Cool wrote:
>
>
>
>
>
> > On Jul 31, 8:41 pm, Arne Vajhøj<a...(a)vajhoej.dk>  wrote:
> >> On 31-07-2010 20:39, Joe Cool wrote:
> >>> On Jul 31, 8:37 pm, Arne Vajhøj<a...(a)vajhoej.dk>    wrote:
> >>>> On 31-07-2010 20:29, Joe Cool wrote:
>
> >>>>> On Jul 31, 8:02 pm, Arne Vajhøj<a...(a)vajhoej.dk>      wrote:
> >>>>>> On 31-07-2010 19:36, Joe Cool wrote:
>
> >>>>>>> I am cross posting this request for help in both the C#,NET and the
> >>>>>>> SQLServer newsgroups in he hope that some reader of one these
> >>>>>>> newsgroups can offer some help.
>
> >>>>>>> I am well aware that the image datatype (as well as others) are being
> >>>>>>> phased out in some future version of SQL Server. For that reason, in
> >>>>>>> all of my personal C#.NET projects that store images use the
> >>>>>>> varbinary(max) datatype.
>
> >>>>>>> I am in the process of converting a VB.NET project that I use for
> >>>>>>> consulting work with a former (and hopefully soon to be repeat)
> >>>>>>> employer tp C#.NET. When originally designed, their software was based
> >>>>>>> on SQL7. Currently their software supports SQL2005. One key table in
> >>>>>>> their database is a table of images and (not sure if it still does)
> >>>>>>> but legacy databases utilize the image datatype to store images. With
> >>>>>>> SQL7 I used a SQL command line utility called TEXTCOPY to extract the
> >>>>>>> binary content of image columns to a JPG file.
>
> >>>>>>> This utility needs to be able to extract these images to external
> >>>>>>> files even for legacy databases that may still use the image datatype.
> >>>>>>> But I find that the technique I use to extract images from a
> >>>>>>> varbinary(max) column doesn't work for image datatypes. And I see that
> >>>>>>> SQL2005, while it still supports image datatype, the TEXTCOPY utility
> >>>>>>> is nowhere to be found.
>
> >>>>>>> Any ideas on how to extract image data types from a SQL2005 database
> >>>>>>> with C#.NET?
>
> >>>>>> Have you tried the obvious: SqlConnection, SqlCommand, SELECT,
> >>>>>> ExecuteReader, SqlDataReader og læse kolonnen som byte[] ?
>
> >>>>> Here is what I am using that works with varbinary(max) datatype
> >>>>> columns.
>
> >>>>> SqlCommand cmd;
> >>>>> SqlDataReader rdr;
> >>>>> DataTable dataTable;
>
> >>>>> cmd = new SqlCommand("select imagecolumn, linkcolumn from images",
> >>>>> cn)'
> >>>>> rdr = cmd.ExecuteReader();
> >>>>> dataTable.Load(rdr);
>
> >>>> Drop the data table and try:
>
> >>>> while(rdr.Read())
> >>>> {
> >>>>        byte[] image = (byte[])rdr[0];
> >>>>        string link = (string)rdr[1];
> >>>>        // process image and link
>
> >>>> }
>
> >>> Umm, so are you saying that while the datatable works with a
> >>> varbinary(max) datatype, for an image datatype I should drop the
> >>> datatable and just use a data reader?
>
> >> I don't know if the data table is the problem.
>
> >> I know that the reader will work.
>
> >> And according to your description, then you don't need
> >> the data table.
>
> >> So it is worth a try.
>
> > The only reason I was trying to use a data table is because I am using
> > a support class library (that I also wrote) that returns data using
> > just a datatable. I suppose I can enhance it to also support returning
> > data with a data reader.
>
> What is the problem when you try getting the image with the
> current code?

The extracted files are smaller than the JPGs extracted by the VB.NET
version and are not valid JPG files (their content is not the same).
From: Arne Vajhøj on
On 31-07-2010 21:41, Joe Cool wrote:
> On Jul 31, 9:21 pm, Arne Vajh�j<a...(a)vajhoej.dk> wrote:
>> On 31-07-2010 20:50, Joe Cool wrote:
>>> On Jul 31, 8:41 pm, Arne Vajh�j<a...(a)vajhoej.dk> wrote:
>>>> On 31-07-2010 20:39, Joe Cool wrote:
>>>>> On Jul 31, 8:37 pm, Arne Vajh�j<a...(a)vajhoej.dk> wrote:
>>>>>> On 31-07-2010 20:29, Joe Cool wrote:
>>
>>>>>>> On Jul 31, 8:02 pm, Arne Vajh�j<a...(a)vajhoej.dk> wrote:
>>>>>>>> On 31-07-2010 19:36, Joe Cool wrote:
>>
>>>>>>>>> I am cross posting this request for help in both the C#,NET and the
>>>>>>>>> SQLServer newsgroups in he hope that some reader of one these
>>>>>>>>> newsgroups can offer some help.
>>
>>>>>>>>> I am well aware that the image datatype (as well as others) are being
>>>>>>>>> phased out in some future version of SQL Server. For that reason, in
>>>>>>>>> all of my personal C#.NET projects that store images use the
>>>>>>>>> varbinary(max) datatype.
>>
>>>>>>>>> I am in the process of converting a VB.NET project that I use for
>>>>>>>>> consulting work with a former (and hopefully soon to be repeat)
>>>>>>>>> employer tp C#.NET. When originally designed, their software was based
>>>>>>>>> on SQL7. Currently their software supports SQL2005. One key table in
>>>>>>>>> their database is a table of images and (not sure if it still does)
>>>>>>>>> but legacy databases utilize the image datatype to store images. With
>>>>>>>>> SQL7 I used a SQL command line utility called TEXTCOPY to extract the
>>>>>>>>> binary content of image columns to a JPG file.
>>
>>>>>>>>> This utility needs to be able to extract these images to external
>>>>>>>>> files even for legacy databases that may still use the image datatype.
>>>>>>>>> But I find that the technique I use to extract images from a
>>>>>>>>> varbinary(max) column doesn't work for image datatypes. And I see that
>>>>>>>>> SQL2005, while it still supports image datatype, the TEXTCOPY utility
>>>>>>>>> is nowhere to be found.
>>
>>>>>>>>> Any ideas on how to extract image data types from a SQL2005 database
>>>>>>>>> with C#.NET?
>>
>>>>>>>> Have you tried the obvious: SqlConnection, SqlCommand, SELECT,
>>>>>>>> ExecuteReader, SqlDataReader og l�se kolonnen som byte[] ?
>>
>>>>>>> Here is what I am using that works with varbinary(max) datatype
>>>>>>> columns.
>>
>>>>>>> SqlCommand cmd;
>>>>>>> SqlDataReader rdr;
>>>>>>> DataTable dataTable;
>>
>>>>>>> cmd = new SqlCommand("select imagecolumn, linkcolumn from images",
>>>>>>> cn)'
>>>>>>> rdr = cmd.ExecuteReader();
>>>>>>> dataTable.Load(rdr);
>>
>>>>>> Drop the data table and try:
>>
>>>>>> while(rdr.Read())
>>>>>> {
>>>>>> byte[] image = (byte[])rdr[0];
>>>>>> string link = (string)rdr[1];
>>>>>> // process image and link
>>
>>>>>> }
>>
>>>>> Umm, so are you saying that while the datatable works with a
>>>>> varbinary(max) datatype, for an image datatype I should drop the
>>>>> datatable and just use a data reader?
>>
>>>> I don't know if the data table is the problem.
>>
>>>> I know that the reader will work.
>>
>>>> And according to your description, then you don't need
>>>> the data table.
>>
>>>> So it is worth a try.
>>
>>> The only reason I was trying to use a data table is because I am using
>>> a support class library (that I also wrote) that returns data using
>>> just a datatable. I suppose I can enhance it to also support returning
>>> data with a data reader.
>>
>> What is the problem when you try getting the image with the
>> current code?
>
> The extracted files are smaller than the JPGs extracted by the VB.NET
> version and are not valid JPG files (their content is not the same).

Is the size in the DB correct?

If yes - is the size in the data table correct?

Arne

From: Joe Cool on
On Jul 31, 9:46 pm, Arne Vajhøj <a...(a)vajhoej.dk> wrote:
> On 31-07-2010 21:41, Joe Cool wrote:
>
>
>
>
>
> > On Jul 31, 9:21 pm, Arne Vajhøj<a...(a)vajhoej.dk>  wrote:
> >> On 31-07-2010 20:50, Joe Cool wrote:
> >>> On Jul 31, 8:41 pm, Arne Vajhøj<a...(a)vajhoej.dk>    wrote:
> >>>> On 31-07-2010 20:39, Joe Cool wrote:
> >>>>> On Jul 31, 8:37 pm, Arne Vajhøj<a...(a)vajhoej.dk>      wrote:
> >>>>>> On 31-07-2010 20:29, Joe Cool wrote:
>
> >>>>>>> On Jul 31, 8:02 pm, Arne Vajhøj<a...(a)vajhoej.dk>        wrote:
> >>>>>>>> On 31-07-2010 19:36, Joe Cool wrote:
>
> >>>>>>>>> I am cross posting this request for help in both the C#,NET and the
> >>>>>>>>> SQLServer newsgroups in he hope that some reader of one these
> >>>>>>>>> newsgroups can offer some help.
>
> >>>>>>>>> I am well aware that the image datatype (as well as others) are being
> >>>>>>>>> phased out in some future version of SQL Server. For that reason, in
> >>>>>>>>> all of my personal C#.NET projects that store images use the
> >>>>>>>>> varbinary(max) datatype.
>
> >>>>>>>>> I am in the process of converting a VB.NET project that I use for
> >>>>>>>>> consulting work with a former (and hopefully soon to be repeat)
> >>>>>>>>> employer tp C#.NET. When originally designed, their software was based
> >>>>>>>>> on SQL7. Currently their software supports SQL2005. One key table in
> >>>>>>>>> their database is a table of images and (not sure if it still does)
> >>>>>>>>> but legacy databases utilize the image datatype to store images.. With
> >>>>>>>>> SQL7 I used a SQL command line utility called TEXTCOPY to extract the
> >>>>>>>>> binary content of image columns to a JPG file.
>
> >>>>>>>>> This utility needs to be able to extract these images to external
> >>>>>>>>> files even for legacy databases that may still use the image datatype.
> >>>>>>>>> But I find that the technique I use to extract images from a
> >>>>>>>>> varbinary(max) column doesn't work for image datatypes. And I see that
> >>>>>>>>> SQL2005, while it still supports image datatype, the TEXTCOPY utility
> >>>>>>>>> is nowhere to be found.
>
> >>>>>>>>> Any ideas on how to extract image data types from a SQL2005 database
> >>>>>>>>> with C#.NET?
>
> >>>>>>>> Have you tried the obvious: SqlConnection, SqlCommand, SELECT,
> >>>>>>>> ExecuteReader, SqlDataReader og læse kolonnen som byte[] ?
>
> >>>>>>> Here is what I am using that works with varbinary(max) datatype
> >>>>>>> columns.
>
> >>>>>>> SqlCommand cmd;
> >>>>>>> SqlDataReader rdr;
> >>>>>>> DataTable dataTable;
>
> >>>>>>> cmd = new SqlCommand("select imagecolumn, linkcolumn from images",
> >>>>>>> cn)'
> >>>>>>> rdr = cmd.ExecuteReader();
> >>>>>>> dataTable.Load(rdr);
>
> >>>>>> Drop the data table and try:
>
> >>>>>> while(rdr.Read())
> >>>>>> {
> >>>>>>         byte[] image = (byte[])rdr[0];
> >>>>>>         string link = (string)rdr[1];
> >>>>>>         // process image and link
>
> >>>>>> }
>
> >>>>> Umm, so are you saying that while the datatable works with a
> >>>>> varbinary(max) datatype, for an image datatype I should drop the
> >>>>> datatable and just use a data reader?
>
> >>>> I don't know if the data table is the problem.
>
> >>>> I know that the reader will work.
>
> >>>> And according to your description, then you don't need
> >>>> the data table.
>
> >>>> So it is worth a try.
>
> >>> The only reason I was trying to use a data table is because I am using
> >>> a support class library (that I also wrote) that returns data using
> >>> just a datatable. I suppose I can enhance it to also support returning
> >>> data with a data reader.
>
> >> What is the problem when you try getting the image with the
> >> current code?
>
> > The extracted files are smaller than the JPGs extracted by the VB.NET
> > version and are not valid JPG files (their content is not the same).
>
> Is the size in the DB correct?
>
> If yes - is the size in the data table correct?

In the FileStream object's Write mthod, I am using
((byte[])dataTable.Rows[i][0]).Length as the number of bytes to write.

I assume thelength is the DB is correct since I am using the same DB
to test the C#.NET program to test with that I originally used the
VB.NET programs to originally extract the JPs with.
From: Arne Vajhøj on
On 31-07-2010 21:52, Joe Cool wrote:
> On Jul 31, 9:46 pm, Arne Vajh�j<a...(a)vajhoej.dk> wrote:
>> On 31-07-2010 21:41, Joe Cool wrote:
>>
>>
>>
>>
>>
>>> On Jul 31, 9:21 pm, Arne Vajh�j<a...(a)vajhoej.dk> wrote:
>>>> On 31-07-2010 20:50, Joe Cool wrote:
>>>>> On Jul 31, 8:41 pm, Arne Vajh�j<a...(a)vajhoej.dk> wrote:
>>>>>> On 31-07-2010 20:39, Joe Cool wrote:
>>>>>>> On Jul 31, 8:37 pm, Arne Vajh�j<a...(a)vajhoej.dk> wrote:
>>>>>>>> On 31-07-2010 20:29, Joe Cool wrote:
>>
>>>>>>>>> On Jul 31, 8:02 pm, Arne Vajh�j<a...(a)vajhoej.dk> wrote:
>>>>>>>>>> On 31-07-2010 19:36, Joe Cool wrote:
>>
>>>>>>>>>>> I am cross posting this request for help in both the C#,NET and the
>>>>>>>>>>> SQLServer newsgroups in he hope that some reader of one these
>>>>>>>>>>> newsgroups can offer some help.
>>
>>>>>>>>>>> I am well aware that the image datatype (as well as others) are being
>>>>>>>>>>> phased out in some future version of SQL Server. For that reason, in
>>>>>>>>>>> all of my personal C#.NET projects that store images use the
>>>>>>>>>>> varbinary(max) datatype.
>>
>>>>>>>>>>> I am in the process of converting a VB.NET project that I use for
>>>>>>>>>>> consulting work with a former (and hopefully soon to be repeat)
>>>>>>>>>>> employer tp C#.NET. When originally designed, their software was based
>>>>>>>>>>> on SQL7. Currently their software supports SQL2005. One key table in
>>>>>>>>>>> their database is a table of images and (not sure if it still does)
>>>>>>>>>>> but legacy databases utilize the image datatype to store images. With
>>>>>>>>>>> SQL7 I used a SQL command line utility called TEXTCOPY to extract the
>>>>>>>>>>> binary content of image columns to a JPG file.
>>
>>>>>>>>>>> This utility needs to be able to extract these images to external
>>>>>>>>>>> files even for legacy databases that may still use the image datatype.
>>>>>>>>>>> But I find that the technique I use to extract images from a
>>>>>>>>>>> varbinary(max) column doesn't work for image datatypes. And I see that
>>>>>>>>>>> SQL2005, while it still supports image datatype, the TEXTCOPY utility
>>>>>>>>>>> is nowhere to be found.
>>
>>>>>>>>>>> Any ideas on how to extract image data types from a SQL2005 database
>>>>>>>>>>> with C#.NET?
>>
>>>>>>>>>> Have you tried the obvious: SqlConnection, SqlCommand, SELECT,
>>>>>>>>>> ExecuteReader, SqlDataReader og l�se kolonnen som byte[] ?
>>
>>>>>>>>> Here is what I am using that works with varbinary(max) datatype
>>>>>>>>> columns.
>>
>>>>>>>>> SqlCommand cmd;
>>>>>>>>> SqlDataReader rdr;
>>>>>>>>> DataTable dataTable;
>>
>>>>>>>>> cmd = new SqlCommand("select imagecolumn, linkcolumn from images",
>>>>>>>>> cn)'
>>>>>>>>> rdr = cmd.ExecuteReader();
>>>>>>>>> dataTable.Load(rdr);
>>
>>>>>>>> Drop the data table and try:
>>
>>>>>>>> while(rdr.Read())
>>>>>>>> {
>>>>>>>> byte[] image = (byte[])rdr[0];
>>>>>>>> string link = (string)rdr[1];
>>>>>>>> // process image and link
>>
>>>>>>>> }
>>
>>>>>>> Umm, so are you saying that while the datatable works with a
>>>>>>> varbinary(max) datatype, for an image datatype I should drop the
>>>>>>> datatable and just use a data reader?
>>
>>>>>> I don't know if the data table is the problem.
>>
>>>>>> I know that the reader will work.
>>
>>>>>> And according to your description, then you don't need
>>>>>> the data table.
>>
>>>>>> So it is worth a try.
>>
>>>>> The only reason I was trying to use a data table is because I am using
>>>>> a support class library (that I also wrote) that returns data using
>>>>> just a datatable. I suppose I can enhance it to also support returning
>>>>> data with a data reader.
>>
>>>> What is the problem when you try getting the image with the
>>>> current code?
>>
>>> The extracted files are smaller than the JPGs extracted by the VB.NET
>>> version and are not valid JPG files (their content is not the same).
>>
>> Is the size in the DB correct?
>>
>> If yes - is the size in the data table correct?
>
> In the FileStream object's Write mthod, I am using
> ((byte[])dataTable.Rows[i][0]).Length as the number of bytes to write.
>
> I assume thelength is the DB is correct since I am using the same DB
> to test the C#.NET program to test with that I originally used the
> VB.NET programs to originally extract the JPs with.

How does the VB.NET and C# code differ?

Arne