0

我的程序从文件中读取记录,并为文件中的每条记录从数据库中获取值。我在我的 Pro*C 程序中声明了一个宿主变量。我在程序内的一个选择查询中使用了该主机变量。变量的内存不会为每条记录清除。

例如,对于第一条记录,sql 查询获取“ABCD”。然后对于第二条记录,查询获取“EFGHIJKL”。对于第三条记录,DB 中的实际值为“GHI”,但内存没有被清除,它会打印“GHIHIJKL”。

如何解决?

4

2 回答 2

1

这里基本上你应该做什么。还有一个 Pro*C 内联设置应该自动执行此操作,但我遇到了一些问题,所以我更喜欢这个解决方案,它既快速又简单。

VARCHAR var[50+1];      /* Add 1 char more than the size of the queried column of the database */

EXEC SQL SELECT thing INTO :var WHERE /* whatever */

if(sqlca.sqlcode == 0) 
  var.arr[var.len] = 0;      /* Add the \0 char at the end of you var.
于 2011-08-16T15:01:47.650 回答
0

您应该使用数据库调用提供的长度,为您提供处理包含 NUL 字节的数据的能力。

或者您使用给定的长度手动终止您的字符串。这仅适用于“NUL-less”字符串。

于 2011-08-16T14:27:32.887 回答