CVI连接数据库问题
下面的代码请问错在哪里呢 请指教。
char serialNum[11];
int sNumStatus;
hdbc=DBConnect("DSN=STT"); //建立连接
hmap = DBBeginMap(hdbc);
DBMapColumnToChar(hmap, "名称", 11,serialNum, &sNumStatus,"");
/* More variable mappings */
hstmt = DBActivateMap(hmap, "参数表");
while (DBFetchNext(hstmt) == 0)
{
}
DBDeactivateMap(hmap); 展开
我试过,我的可以啊,不过我是将其显示在表格中。
int CVICALLBACK ReadCB (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int i=0;
long meas1Stat;
int hmap;
int hstmt;
int resCode;
char num[50];
switch (event)
{
case EVENT_COMMIT:
hdbc=DBConnect ("DSN=BinTestCVI;UID=××;PWD=××××");
if(hdbc<=0)
{
MessagePopup ("Connect", "cann't connect to the data source!");
return 0;
}
else
{
MessagePopup ("Connect", "Successfully connect to the data source!");
}
hmap= DBBeginMap(hdbc);
DBMapColumnToChar (hmap, "NAME", 11, num,&meas1Stat,"");
// DBMapColumnToChar(hmap, "名称", 11,serialNum, &sNumStatus,"");
//hstmt = DBActivateMap(hmap, "参数表");
hstmt=DBActivateMap(hmap,"table1");
while ( DBFetchNext(hstmt)==0)
{
InsertTableRows (panelHandle, PANEL_TAB_RESULTS, -1, 1, VAL_CELL_STRING);
SetTableCellVal (panelHandle, PANEL_TAB_RESULTS, MakePoint(3,i+1), num);
i++;
}
break;
}
return 0;
}
程序语法没问题,是不是你数据库的数据类型和你程序变量类型不匹配,或其它逻辑错误。
另外”while ( DBFetchNext(hstmt)==0)“ 每执行一次DBFetchNext(hstmt),将你表格中的一行记录中你绑定的列的值给你绑定的变量,所以你的字符串char serialNum[11]最终的值是你表格中的最后一行记录中你绑定的列的值。
字数太多了,看附件。