SQLFETCH 报错-1 怎么解决

klose1013 2020-03-12 03:27:16
VS2019 64bit
把201032bit的项目移植过来

OBDC接续的时候
SQLFETCH的回值(下面红字)报错-1
请问大神怎么解决

int CDbAbsotime::DbGetAbsotimeSetArray(CString where, DbAbsotimeSetArray& array)
{
CString sql;
HSTMT hst;
RETCODE rc;
SQLLEN cb;

// ここで自分以外のmdbに接続するのを止める=>ここでの取得は接続しているDBからに変更
// 絶対期・相対期を取得するmdbは必ず1期のmdb(PlusI100_1.mdb)とすること!
// 1期のmdb(PlusI100_1.mdb)が存在しない場合はエラー
//CString mdbFileName="";
//if (!GetMdbFileName(1, mdbFileName)) return FALSE;
//CString DbBasePWD; DbBasePWD.LoadString(IDC_DB_PWD);
//CString tableName = "pi_absotime";
//CString tbl; tbl.Format("[;DATABASE=%s;PWD=%s].[%s] ", mdbFileName, DbBasePWD, tableName);

CString tbl = _T("pi_absotime ");
sql = _T("SELECT ");
sql += _T("soutaiki, time_s, time_e, zettaiki ");
sql += _T("FROM ");
sql += tbl;
sql += where;

if (DoSQL(sql, &hst)) {
return FALSE;
}

DbAbsotimeSet absotimeSet;

int seq = 1;
// 数値型は一旦charへFETCHする
char soutaiki [32];
char time_s [32];
char time_e [32];
char zettaiki [32];
SQLBIND(hst, seq, SQL_C_CHAR, soutaiki, 1, &cb); seq++;
SQLBIND(hst, seq, SQL_C_CHAR, time_s , 1, &cb); seq++;
SQLBIND(hst, seq, SQL_C_CHAR, time_e , 1, &cb); seq++;
SQLBIND(hst, seq, SQL_C_CHAR, zettaiki , 1, &cb); seq++;

array.RemoveAll();
while( 1 ) {
sprintf(soutaiki , _T("%d"), 0 );
sprintf(time_s ,_T(" %d") ,0 );
sprintf(time_e , _T("%d"), 0 );
sprintf(zettaiki , _T("%d"), 0 );
memset(&absotimeSet, NULL, sizeof(absotimeSet));
rc = SQLFETCH(hst);
if (SQLERROR(rc)) break;
// char値を数値に変換して構造体へ
absotimeSet.soutaiki = atoi(soutaiki );
absotimeSet.time_s = atoi(time_s );
absotimeSet.time_e = atoi(time_e );
absotimeSet.zettaiki = atoi(zettaiki );
array.Add(absotimeSet);
}
SQLDELHST(hst);
return array.GetSize();
} // End of DbGetAbsotimeSetArray
...全文
205 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

4,018

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧