Skip to Content.
Sympa Menu

freetds - [freetds] Problem with data type conversions and FreeTDS

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: James Vanns <jimv AT canterbury.ac.uk>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: [freetds] Problem with data type conversions and FreeTDS
  • Date: Wed, 30 Jul 2003 13:13:19 -0000

Hi all,

I had a friend create a table on his M$ SQL server 2000 with just one
row and as many columns as data types. He filled each field with a
different value corresponding to data type. E.g.

bigint, bit, char, datetime, float, money, nvarchar, unique
1111119,1,c,30/04/2003 13:00:19,23.45, 123.45, hello, {F44A-etc-...blah}

Note the Unique identifier in the above example is not the real value I
just couldn't be bothered to write it out in full!

Anyway using the code snippet below works great except when trying to
convert and print the unique ID. What should I be doing to allow all
data types to be printed successfully as with tsql and sqsh?

<snip>

const string& tds::connection::print_field (const int &column) {
static string str;
unsigned char *row = results->current_row;
const int type = results->columns[column]->column_type;
const int offset = results->columns[column]->column_offset;
const int size = results->columns[column]->column_cur_size;
const int conversion_type = tds_get_conversion_type (type, size);

str.clear ();

if (tds_get_null (const_cast <unsigned char *> (row), column))
str = "NULL";
else {
CONV_RESULT convert;
unsigned char *value = &(row[offset]);

if (is_blob_type (type))
value = (unsigned char*) ((TDSBLOBINFO *) value)->textvalue;

if (tds_convert (context, conversion_type, (TDS_CHAR *) value,
size, SYBVARCHAR, &convert) < 0)
throw tds::error ("Failed to convert row type at column.");

str = convert.c;
free (convert.c);
}

return str;
}

</snip>

I have tried printing both the C++ tds::string and the converted value*
both fail.

Can anyone help! Plleasse!!

Many thanks

James Vanns

--
James Vanns BSc (Hons) MCP
Linux Systems Administrator
Software Engineer (Linux / C & C++)
Canterbury Christ Church University College
Public Key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x24045370






Archive powered by MHonArc 2.6.24.

Top of Page