NON-FATAL RUN-TIME ERROR: "CreatDbc.c", line 288, col 11, thread id 0x00000CF8: Function DBDeactivateMap: (return value == -89 [0xffffffa7]). Invalid map handle.
我在第一次执行程序的时候:创建数据库后,可以不断的执行插入数据的命令,但是退出程序后,重新执行程序,在执行插入数据时,执行到 DBDeactivateMap (hstat);这个语句就会出现上面的错误,为什啊?请高手帮忙,附件是我的整个工程文件
我的程序
#include "cvi_db.h"
#include <utility.h>
#include <cvirte.h>
#include <userint.h>
#include "CreatDbc.h"
////////////////////////////// 等级1参数 ////////////////////////////////////////////////////////////////
static float DCOVoltvalue;
static float DCUVoltvalue;
static float SysOVoltvalue;
static float SysLVoltvalue;
static float OverLoadvalue;
static float MaxCvalue;
static float CTvalue;
static float IHvalue;
static float PPvalue;
static long DCOVoltstatus;
static long DCUVoltstatus;
static long SysOVoltstatus;
static long SysLVoltstatus;
static long OverLoadstatus;
static long MaxCstatus;
static long CTstatus;
static long IHstatus;
static long PPstatus;
////////////////////////////// 等级0参数 ////////////////////////////////////////////////////////////////
static float Kvalue;
static float Pvalue;
static float K2value;
static float P2value;
static float Qvalue;
static float Nvalue;
static float Freqvalue;
static float Dvalue;
static long Kstatus;
static long Pstatus;
static long K2status;
static long P2status;
static long Qstatus;
static long Nstatus;
static long Freqstatus;
static long Dstatus;
/////////////////////////////////////////////////// 数据库参数 ///////////////////////////
static long idstatus;
static int idvalue;
static long faultstatus;
static char faultvalue[20]; //故障类型
static long startstatus;
static char startvalue[50]; //故障开始时间
static long endstatus;
static char endvalue[50]; //故障结束时间
static long runstatus;
static char runvalue[20]; //故障运行状态
static long excessstatus;
static char excessvalue[20]; //过量比例
static int resultcode;
static int hstat;
static int hmap;
static int total = 0;
static int i = 1;
static int DbcInitial=0;
static int DbcInitialFlag=1;//数值初始化标志位
//table10:等级1缺省数值
//table11:等级1设置后的数值
//table00:等级0缺省数值
//table01:等级0修改后的数值
//table2:故障查询有关数据
////////////////////////////// 其他参数 ////////////////////////////////////////////////////////////////
static int hdbc;
static int globalvalue;
static int panelHandle; //主界面句柄
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "CreatDbc.uir", PANEL)) < 0)
return -1;
hdbc = DBConnect ("DSN=client");//建立数据库联接,并获得联接句柄
// DisableBreakOnLibraryErrors (); //禁止错误中断
DisplayPanel (panelHandle);
RunUserInterface ();
DiscardPanel (panelHandle);
DBDisconnect (hdbc); //当退出应用程序时,关闭数据库连接
return 0;
}
hstat = DBActivateSQL (hdbc, "SELECT * FROM table2"); //激活SQL查询
// resultcode = DBMapColumnToInt (hmap, "ID", &idvalue, &idstatus);
resultcode =DBBindColInt (hstat, 1, &idvalue,&idstatus );
resultcode = DBBindColChar (hstat, 2, 20, faultvalue, &faultstatus, "");
resultcode = DBBindColChar (hstat, 3, 50, startvalue, &startstatus, "");
resultcode = DBBindColChar (hstat, 4, 50, endvalue, &endstatus, "");
resultcode = DBBindColChar (hstat, 5, 20, runvalue, &runstatus, "");
resultcode = DBBindColChar (hstat, 6, 20, excessvalue, &excessstatus, "");
// resultcode =DBBindColFloat (hstat, 6, &excessvalue,&excessstatus );
// resultcode=DBCreateTableFromMap (hmap, "table2"); //由此映射激活一个数据表
// resultcode=DBActivateMap (hmap, "table2");
while(DBFetchNext(hstat) != DB_EOF)
{}
if (resultcode >= 0)
{
//向数据表中添加数据
for(addi=1;addi<100;addi++)
{
DBImmediateSQL (hdbc, "INSERT INTO table2 VALUES (1,'测试数据库', '成功', '', '','')");
DBImmediateSQL (hdbc, "INSERT INTO table2 VALUES (2,'2', '杨过', '男', 'mm','Am')");
DBImmediateSQL (hdbc, "INSERT INTO table2 VALUES (3,'3', '杨过', '男', 'mm','Am')");
DBImmediateSQL (hdbc, "INSERT INTO table2 VALUES (4,'4', '杨过', '男', 'mm','Am')");
DBImmediateSQL (hdbc, "INSERT INTO table2 VALUES (5,'5', '杨过', '男', 'mm','Am')");
}
}
DBDeactivateMap (hstat); |