我正在使用SqlBase中的DatAdapter.Fill从C# DB读取表信息,它在任何变量类型中都能很好地工作,除了长VARCHAR,在这种情况下,它在C#中转换为字符串类型,如果我添加了一个对象变量,我看到了一些奇怪的字符,所以稍后当我尝试插入/更新另一个表(在另一个数据库中)时,它会失败。
我知道,即使这个值在C#中是可以的--我不能按原样插入这个值--文档说我应该将这个值绑定到一个变量上,以便能够插入到表中,但是我不知道该如何做,因为我正在创建要在SqlBase中运行的C#脚本,我没有从C#中直接执行操作,即使我不能正确地读取该值,因为它将转换成带有奇怪数字的字符串,这个LOAG VARCHAR是否像Server中的VARBINARY?我认为这是因为我遇到问题的专栏是一个徽标,就像一张图片。
所以简单地说,有没有办法
(1)是.NET,但(2)是要使用SqlTalk在Sqlbase上运行的sql脚本。
谢谢!
发布于 2020-08-27 21:47:23
建议使用SQLTalk命令将长数据卸载到平面文件中。这样你就能得到可读的数据。如果需要的话,可以使用C#读取平面文件,并使用它执行任意操作,但是要使用SQLTalk将数据重新加载到另一个表中,则需要使用特定的语法。转到这里:SQLBase手册(所有版本)提取适合您正在使用的SQLBase版本的手册,1)从“SQLBase语言引用”中读取卸载时将长数据输出到一个平面文件中(不同的snytax则提供不同的结果)。然后从“SQLTalk命令引用”中阅读“Long data的绑定变量示例”,因为您必须设置LONG VARCHAR数据来绑定变量。将长数据插入长VARCHAR或长NVARCHAR或long二进制列时,在其前面加上$LONG关键字。然后,可以开始在下一行输入数据,并继续在连续行上输入数据。要标记文本的结尾,请在新行(//)上输入一个双斜杠。例如:
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.
//
如果LONG (N)VARCHAR或LONG VARBINARY列的数据来自文件,请在$LONG关键字之后输入文件名。例如:
INSERT INTO BIO (NAME, BIO) VALUES (:1,:2)
\
SHAKESPEARE, $LONG shakes.txt
JONSON,$LONG jonson.txt
O'NEILL,$LONG oneill.txt
/
更新长数据。
UPDATE TABLE EXPENSES SET COMMENTS = :1 WHERE DATE = :2
\
"Beltran Tree Service", 1/1/94 "Hercules", 1/2/94
"Checkup", 1/3/94
/
https://stackoverflow.com/questions/63604491
复制相似问题