Printing SQL in C



我正在寻求在C中打印SQL语句结果的帮助。我尽量不将每个变量设置为指针,然后使用该指针打印变量。如果我这样做了,我会有几百个变量。这就是我迄今为止所尝试的。我真的不知道如何正确地输出。如有任何帮助,我们将不胜感激。

int hstmt = DBActivateSQL(hdbc, "SELECT * FROM REG_RESULTSTABLE");
if (hstmt <= 0)
{
ShowError();
}
sprintf(uutNum, "%s n", hstmt);
while((resCode = DBFetchNext(hstmt)) == DB_SUCCESS) {
SetCtrlVal(panelHandle, PANEL_lstregulator, uutNum);
}

DBActivateSQL的原型是

int DBActivateSQL (int connectionHandle, char SQLStatement[]);

返回int

因此,hstmt应声明为int类型。

int hstmt = DBActivateSQL(hdbc, "SELECT * FROM REG_RESULTSTABLE");

要将其打印为字符串,您需要使用%d而不是%s,因为hsmt属于int类型。

sprintf(uutNum, "%d",hstmt);
^^------------------------//Using %d instead of %s here

您想要的函数是DBFetchNextDBGetCol*(DBGetColCharDBGetColDouble…(。根据DBGetColChar上的文档页面,流应该是这样的,每列只需要一个变量:

void print_MyTable(int hdbc)
{
char *var1;
int var2;
float var3;
int statement = DBActivateSQL(hdbc, "SELECT col1, col2, col3 FROM MyTable");
int resultCode;
while ((resultCode = DBFetchNext(statement)) == DB_SUCCESS) {
if ((resultCode = DBGetColChar(statement, 1, &var1, "")) != DB_SUCCESS) {
// Handle the error
break;
}
if ((resultCode = DBGetColInt(statement, 2, &var2)) != DB_SUCCESS) {
// Handle the error
DBFree(var1);
break;
}
if ((resultCode = DBGetColFloat(statement, 3, &var3)) != DB_SUCCESS) {
// Handle the error
DBFree(var1);
break;
}
// Print the values
printf("col1: %s, col2: %d, col3: %fn", var1, var2, var3);
// Free the string's memory
DBFree(var1);
}
statement = DBDeactivateSQL(statement);
}

相关内容

  • 没有找到相关文章

最新更新