sqlbase

LONG VARCHAR - Read from table to Front (C#) then INSERT / UPDATE value to a table


I'm reading table info from a SqlBase DB using a DatAdapter.Fill in C#, it's working perfectly for any variable type except for LONG VARCHAR, in this case it converts to String type in C# and if I add a watch the object variable I see some weird chars into it, so later when i try to insert/update another table (in another Database) it fails.

I know that even if the value would be ok in C# i can't insert that as it is, the document say i should bind the value to a variable to be able to insert into table, but i'm not sure how to do it since i'm creating the scripts in C# to be run in SqlBase, i'm not taking direct action from C#, even if a could i'm not being able to read the value correctly since it converts to string with weird digits into it, is this LOAG VARCHAR like a VARBINARY in Sql Server? I assume so because the column i have problems with is a LOGO, like a picture.

So in short, is it any way to

  1. Read a long varchar from .NET and then..
  2. ..Use it when inserting / updating values to a table?

(1) is .NET but (2) is a sql script to be run on Sqlbase using SqlTalk.

Thanks!


Solution

  • Suggest you UNLOAD the Long data to a flat file using SQLTalk command. That way you'll get readable data. Read the flat file using C# if you need to, and do what ever you want with it, but to re-load the data into another table using SQLTalk, you need to use specific syntax. Go here: SQLBase Manuals ( all versions ) extract the manual appropriate to the version of SQLBase you are using, and 1) read up on UNLOAD from the 'SQLBase Language Reference' to get the Long data out into a flat file ( there are different snytax giving different results ). Then 2) read up on 'Examples of Bind Variables for Long data' from the 'SQLTalk Command Reference' , as you have to set LONG VARCHAR data to bind variables. When inserting long data into a LONG VARCHAR or LONG NVARCHAR or LONG BINARY column, precede it with the $LONG keyword. You can then start entering data on the next line, and continue entering on successive lines. To mark the end of text, enter a double slash on a new line (//). e.g.

    INSERT INTO BIO (NAME, BIO) VALUES (:1,:2)
    \
    SHAKESPEARE, $LONG
    William Shakespeare was born in Stratford-on-Avon on
    April 16, 1564. He was England's most famous poet and
    dramatist. . . . .. . .
    He died in 1616, leaving his second best bed to his wife.
    //

    If the data for the LONG (N)VARCHAR or LONG VARBINARY column comes from a file, enter the name of the file after the $LONG keyword. e.g.

    INSERT INTO BIO (NAME, BIO) VALUES (:1,:2)
    \
    SHAKESPEARE, $LONG shakes.txt
    JONSON,$LONG jonson.txt
    O'NEILL,$LONG oneill.txt
    /

    To Update Long data e.g.

    UPDATE TABLE EXPENSES SET COMMENTS = :1 WHERE DATE = :2
    \
    "Beltran Tree Service", 1/1/94 "Hercules", 1/2/94
    "Checkup", 1/3/94
    /