快速提问。
在C#代码中我们有类似的东西:
string SQL =
string.Format(
"SELECT DATA FROM DERP_DOC WHERE THING_ID = '{0}'",
thingId);
string Data = dataHandler.ExecuteScalar(SQL);
" DATA"它看起来像这样:
0x30783230323032303230323032303230323032303230333233303331333033313330333233393330333833303330333033303331323032303230323032303230323032303230323034433446353433313230323032303230323032303230323032303230323032303230323032303230323032303230323034453537333133303330333232303230323032303230323032303230323032303230323032303230333033303330333033303330333033333335333033303330333033323330333133313333333633323530333033303331353333303330333235333330333033313333333133313531323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303435353834313433353434313546353535333435353232303330333430443041323032303230323032303230323032303230323033323330333133313331333233323338333033383330333033303330333132303230323032303230323032303230323032303443344635343331323032303230323032303230323 0323032303230323032303230323032303230323032303230323034453537333133303330333232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323041
然而,当我去数据库查看插入时。它得到了这样的东西:
0x53797344656D2E422974655E6G
有什么想法吗?
编辑:用于引用插入'字符串"的插入语句。属于"图像"它与那个巨大的字符串相同的类型,所以它不应该是任何sql截断数据类型问题。
edit2:SQL SELECT语句后的代码
SQL =
string.Format("INSERT INTO WORK (DATE, TIME, LABEL, STATUS, " +
"ORDER, LNIT, SUBIT, ZONE, " +
"OPER, DATA, SEQ) " +
"VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', " +
"'{5}', '{6}', '{7}', '{8}', '{9}', '{10}')",
date, time, "000", 0,
ordem, li, subli, zone,
strOp, Data, seq);
所以数据的价值正在被斩断。
答案 0 :(得分:0)
几乎可以肯定是数据不匹配问题。您的ExecuteScalar函数返回一个二进制对象,但.NET会隐式地将其转换为字符串。然后,您直接将字符串插入SQL,并强制SQL Server将其从字符串转换回二进制文件。
所以,我提出两条建议:
Data
存储到字符串中,而是将其存储到字节数组中
或其他一些字节结构。那应该解决它。