⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 returnresultsetdata.c

📁 适合于Unix/Linux下的一个持久数据库连接池
💻 C
字号:
// Copyright (c) 1999-2001  David Muse// See the file COPYING for more information#include <sqlrconnection.h>bool sqlrconnection_svr::returnResultSetData(sqlrcursor_svr *cursor) {	#ifdef SERVER_DEBUG	debugPrint("connection",2,"returning result set data...");	#endif	// get the number of rows to skip	uint64_t	skip;	if (clientsock->read(&skip,idleclienttimeout,0)!=sizeof(uint64_t)) {		#ifdef SERVER_DEBUG		debugPrint("connection",2,"returning result set data failed");		#endif		return false;	}	// get the number of rows to fetch	uint64_t	fetch;	if (clientsock->read(&fetch,idleclienttimeout,0)!=sizeof(uint64_t)) {		#ifdef SERVER_DEBUG		debugPrint("connection",2,"returning result set data failed");		#endif		return false;	}	// for some queries, there are no rows to return, 	// also if sid egress check failed, return no rows	if (cursor->noRowsToReturn() || cursor->sid_egress) {		clientsock->write((uint16_t)END_RESULT_SET);		flushWriteBuffer();		#ifdef SERVER_DEBUG		debugPrint("connection",2,"done returning result set data");		#endif		return true;	}	// reinit suspendresultset	cursor->suspendresultset=false;	// skip the specified number of rows	if (!skipRows(cursor,skip)) {		clientsock->write((uint16_t)END_RESULT_SET);		flushWriteBuffer();		#ifdef SERVER_DEBUG		debugPrint("connection",2,"done returning result set data");		#endif		return true;	}	#ifdef SERVER_DEBUG	debugstr=new stringbuffer();	debugstr->append("fetching ");	debugstr->append(fetch);	debugstr->append(" rows...");	debugPrint("connection",2,debugstr->getString());	delete debugstr;	#endif	// send the specified number of rows back	for (uint64_t i=0; (!fetch || i<fetch); i++) {		if (!cursor->fetchRow()) {			clientsock->write((uint16_t)END_RESULT_SET);			flushWriteBuffer();			#ifdef SERVER_DEBUG			debugPrint("connection",2,					"done returning result set data");			#endif			return true;		}		#ifdef SERVER_DEBUG		debugstr=new stringbuffer();		#endif		cursor->returnRow();		#ifdef SERVER_DEBUG		debugPrint("connection",3,debugstr->getString());		delete debugstr;		#endif		if (lastrowvalid) {			lastrow++;		} else {			lastrowvalid=true;			lastrow=0;		}	}	flushWriteBuffer();	#ifdef SERVER_DEBUG	debugPrint("connection",2,"done returning result set data");	#endif	return true;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -