我的程序从文件中读取记录,对于文件中的每条记录,它从DB中获取值。我在Pro * C程序中声明了一个宿主变量。我在程序中的一个select查询中使用了该宿主变量。每个记录都不会清除变量的内存。
例如,对于第一条记录,sql查询获取“ABCD”。然后对于第二条记录,查询将获取“EFGHIJKL”。对于第三个记录,DB中的实际值是“GHI”,但内存不会被清除,并打印“GHIHIJKL”。
如何解决?
答案 0 :(得分: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.
答案 1 :(得分:0)
您应该使用数据库调用提供的长度,使您能够处理包含NUL字节的数据。
或者您使用给定长度手动终止字符串。这仅适用于“NUL-less”字符串。