SQLFETCH 报错-1 怎么解决
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