亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sqldata.cpp

?? 以OLE DB風格訪問DB2數據庫的C++類源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
			ASSERT(m_pData->nBufferSize >= sizeof(TIMESTAMP_STRUCT));
			TIMESTAMP_STRUCT* pData = (TIMESTAMP_STRUCT*) GetBuffer();
			::sscanf(pszValue, "%d-%d-%d %d:%d:%d.%d",
				&pData->year, &pData->month, &pData->day,
				&pData->hour, &pData->minute, &pData->second,
				&pData->fraction);
			if (!m_pData->nScale)
				pData->fraction = 0;
		}
		m_pData->nIndicator = sizeof(TIMESTAMP_STRUCT);
		break;
	default:
		return SetValue(pszValue);
	}
	return TRUE;
}

// Converts the value to string
int CSqlVariant::ToString(std::string& strValue)
{
	strValue.resize(0);
	if (IsNull())
		return 0;

	int nSize = GetDisplaySize();
	if (nSize <= 0)
		return 0;

	strValue.resize(nSize+1);
	char* pszBuff = &strValue[0];

	switch (m_pData->nDataType)
	{
	case SQL_C_SHORT:
		::itoa((int)m_pData->iVal, pszBuff, 10);
		break;
	case SQL_C_LONG:
		::itoa(m_pData->nVal, pszBuff, 10);
		break;
	case SQL_C_SBIGINT:
#if defined(__xlC__) || defined(__IBMC__) || defined(__IBMCPP__)
		::lltoa(m_pData->lVal, pszBuff, 10);
#else
		::_i64toa(m_pData->lVal, pszBuff, 10);
#endif
		break;
	case SQL_C_FLOAT:
		::sprintf(pszBuff, "%*f", m_pData->fltVal);
		break;
	case SQL_C_DOUBLE:
		::sprintf(pszBuff, "%*lf", m_pData->dbVal);
		break;
	case SQL_C_TYPE_DATE:
		::sprintf(pszBuff, "%d-%02d-%02d", m_pData->dtVal.year,
			m_pData->dtVal.month, m_pData->dtVal.day);
		break;
	case SQL_C_TYPE_TIME:
		::sprintf(pszBuff, "%02d:%02d:%02d", m_pData->tmVal.hour,
			m_pData->tmVal.minute, m_pData->tmVal.second);
		break;
	case SQL_C_TYPE_TIMESTAMP:
		{
			const TIMESTAMP_STRUCT* pData = GetTimeStamp();
			::sprintf(pszBuff, "%d-%d-%d %d:%d:%d.%d",
				pData->year, pData->month, pData->day,
				pData->hour, pData->minute, pData->second,
				pData->fraction);
		}
		break;
	default:
		::memcpy(pszBuff, m_pData->pVal, nSize);
		pszBuff[nSize] = 0;
		// remove the trailing spaces, added May 20, 2002
		nSize = (int)::strlen(pszBuff);
		while (nSize > 0 && pszBuff[nSize-1] == ' ')
			nSize--;
		pszBuff[nSize] = 0;
		break;
	}

	//strValue.resize(string::traits_type::length(strValue.c_str()));
	strValue.resize(::strlen(strValue.c_str()));
	return (int)strValue.size();
}


//////////////////////////////////////////////////////////////////////
// class CSqlParameter - Represents a parameter or argument
// associated with a SQL statement or stored procedure
//////////////////////////////////////////////////////////////////////

CSqlParameter::CSqlParameter() :
	m_bBindFile(FALSE),
	m_nFileOptions(SQL_FILE_READ),
	m_nSqlType(SQL_UNKNOWN_TYPE),
	m_nIoType(SQL_PARAM_INPUT)		// SQL_PARAM_TYPE_UNKNOWN
{
}

CSqlParameter::CSqlParameter(const CSqlParameter& rData)
{
	*this = rData;
}

CSqlParameter::~CSqlParameter()
{
}

// Initializes a parameter
// Arguments:
//	nSqlType - Specifies the SQL data type of the parameter.
//	nIoType - Specifies the input/output type of the parameter.
//	nPrecision - Specifies the precision of the parameter.
//		- For a binary or single byte string, it is in unit of byte
//		- For a double byte string, it is in unit of double-byte
//		- For NUMERIC or DECIMAL, it is the decimal precision.
//		- For fixed-length data type, this argument is ignored
//	nScale - Specifies the scale if nSqlType is SQL_NUMERIC, SQL_ECIMAL, or SQL_TIMESTAMP
BOOL CSqlParameter::CreateParameter(SQLSMALLINT nSqlType, SQLSMALLINT nIoType,
									SQLUINTEGER nPrecision, SQLSMALLINT nScale)
{
	if (!CreateBuffer(nSqlType, nPrecision))
		return FALSE;

	m_pData->nScale = nScale;
	m_nIoType = nIoType;
	m_bBindFile = FALSE;
	return TRUE;
}

// Initializes a file-binding parameter
// Arguments:
//	nSqlType - Specifies the SQL data type of the parameter. It can only be BLOB, CLOB, or DBCLOB.
BOOL CSqlParameter::CreateFileParam(SQLSMALLINT nSqlType)
{
	if (!AllocBuffer(MAX_PATH))
		return FALSE;

	m_pData->nDataType = SQL_C_CHAR;
	m_pData->nSqlType = SQL_CHAR;
	ASSERT(nSqlType == SQL_BLOB ||
		nSqlType == SQL_CLOB ||
		nSqlType == SQL_DBCLOB);
	m_nSqlType = nSqlType;
	m_bBindFile = TRUE;
	return TRUE;
}

// Binds the parameter to a command object
// This function should be called before SQLExecute()
BOOL CSqlParameter::Bind(CSqlCommand* pStmt, int nOrdinal)
{
	SQLRETURN nRet;
	ASSERT(pStmt != NULL);
	ASSERT(pStmt->IsOpen());
	if (!m_bBindFile)
	{
		nRet = ::SQLBindParameter(pStmt->GetHandle(), nOrdinal, m_nIoType,
			m_pData->nDataType, m_pData->nSqlType, m_pData->nPrecision, m_pData->nScale,
			(SQLPOINTER) (IsDefault() ? NULL : m_pData->pVal),
			GetMaxSize(), &m_pData->nIndicator);
	}
	else
	{
		ASSERT(!IsDefault());
		m_pData->nIndicator = 0;	// must be set to 0
		nRet = ::SQLBindFileToParam(pStmt->GetHandle(), nOrdinal, m_nSqlType,
			GetBuffer(), NULL, &m_nFileOptions, (SQLSMALLINT)GetMaxSize(), &m_pData->nIndicator);
	}
	return pStmt->SqlCheck(nRet);
}

// Unbinds the parameter
BOOL CSqlParameter::Unbind(CSqlCommand* pStmt, int nOrdinal)
{
	BOOL bOK = CSqlVariant::Unbind(pStmt, nOrdinal);
	if (bOK && pStmt != NULL && pStmt->IsOpen() && !m_bBindFile)
		bOK = pStmt->SqlCheck(::SQLBindParameter(pStmt->GetHandle(), nOrdinal,
			0, SQL_C_DEFAULT, SQL_DEFAULT, 0, 0, NULL, 0, NULL));
	return bOK;
}

CSqlParameter& CSqlParameter::operator=(const CSqlParameter& rValue)
{
	if (this != &rValue)
	{
		CopyData(rValue);
		m_bBindFile = rValue.m_bBindFile;
		m_nFileOptions = rValue.m_nFileOptions;
		m_nSqlType = rValue.m_nSqlType;
		m_nIoType = rValue.m_nIoType;
	}
	return *this;
}


//////////////////////////////////////////////////////////////////////
// class CSqlField - Represents a column of data in a recordset
//////////////////////////////////////////////////////////////////////

CSqlField::CSqlField() :
	m_bBindFile(FALSE),
	m_nFileOptions(SQL_FILE_OVERWRITE),
	m_nOrdinal(0),
	m_bNullable(FALSE)
{
}

CSqlField::CSqlField(const CSqlField& rData)
{
	*this = rData;
}

CSqlField::~CSqlField()
{
}

// Initializes a field object
// Application call this function when the column size and type is known
// and auto-binding is not wanted.
// Arguments:
//	pszFieldName - Specifies the column name. It can be an SQL expression
//	nDataType - Specifies the C data type of the field
//	nDataSize - Specifies the maximum length in bytes of the field.
//		This argument is ignored if nDataType specifies a fixed-length data type.
BOOL CSqlField::CreateField(PCSTR pszFieldName, SQLSMALLINT nDataType, SQLINTEGER nDataSize)
{
	for (int n=0; n<MAX_SQL_TYPE; n++)
		if (nDataType == m_tblDataType[n].nDataType)
			break;

	if (n < MAX_SQL_TYPE)	// it's a valid data type
	{
		if (m_tblDataType[n].nDataSize != 0)	// fixed-length data type
			nDataSize = m_tblDataType[n].nDataSize;
	}

	if (!AllocBuffer(nDataSize))
		return FALSE;

	m_pData->nDataType = nDataType;
	m_pData->nIndicator = 0;
	m_strName = pszFieldName;
	m_nOrdinal = 0;
	m_bBindFile = FALSE;
	return TRUE;
}

// Initializes a field according to the attribute of the specified column in a recordset.
BOOL CSqlField::CreateField(CSqlCommand* pStmt, int nOrdinal)
{
	// get the column information
	SQLCHAR szName[256];
	SQLSMALLINT nNameSize, nSqlType, nScale, nNullable;
	SQLUINTEGER nPrecision;

	if (!pStmt->SqlCheck(::SQLDescribeCol(pStmt->GetHandle(), nOrdinal, szName, sizeof(szName),
		&nNameSize, &nSqlType, &nPrecision, &nScale, &nNullable)))
		return FALSE;
	if (!CreateBuffer(nSqlType, nPrecision))
		return FALSE;

	// calls SQLColAttribute(SQL_DESC_UPDATABLE) to check if the column is updatable.
	// if the column should not be updated, places SQL_ROW_IGNORE in StrLen_or_IndPtr
	// buffer when SQLSetPos() for SQL_UPDATE is called.

	m_pData->nScale = nScale;
	m_strName.assign((const char*) szName);
	m_nOrdinal = nOrdinal;
	m_bBindFile = FALSE;
	m_bNullable = (SQL_NULLABLE == nNullable);
	return TRUE;
}

// Initializes a file-binding field
// Arguments:
//	pszFieldName - Specifies the column name.
//	nFileOption - Specifies the file access option.
//		SQL_FILE_CREATE - create a new file.
//		SQL_FILE_OVERWRITE - overwrite existing file, or create a new file
//		SQL_FILE_APPEND - append to existing file, or create a new file
BOOL CSqlField::CreateFileField(PCSTR pszFieldName, SQLUINTEGER nFileOption)
{
	if (!AllocBuffer(MAX_PATH))
		return FALSE;

	m_pData->nSqlType = SQL_CHAR;
	m_pData->nDataType = SQL_C_CHAR;
	m_pData->nIndicator = 0;
	m_nFileOptions = nFileOption;
	m_strName = pszFieldName;
	m_nOrdinal = 0;
	m_bBindFile = TRUE;
	return TRUE;
}

// Binds a field to a column in the recordset
BOOL CSqlField::Bind(CSqlCommand* pStmt, int nOrdinal)
{
	ASSERT(!IsDefault());
	ASSERT(pStmt != NULL);
	ASSERT(pStmt->IsOpen());

	m_pData->nIndicator = 0;
	if (m_nOrdinal != 0)
		nOrdinal = m_nOrdinal;
	SQLRETURN nRet;
	if (!m_bBindFile)
	{
		nRet = ::SQLBindCol(pStmt->GetHandle(), nOrdinal, m_pData->nDataType,
			GetBuffer(), GetMaxSize(), &m_pData->nIndicator);
	}
	else
	{
		nRet = ::SQLBindFileToCol(pStmt->GetHandle(), nOrdinal, GetBuffer(),
			NULL, &m_nFileOptions, (SQLSMALLINT)GetMaxSize(), NULL, &m_pData->nIndicator);
	}

	return pStmt->SqlCheck(nRet);
}

// Unbinds a field from the recordset
BOOL CSqlField::Unbind(CSqlCommand* pStmt, int nOrdinal)
{
	BOOL bOK = CSqlVariant::Unbind(pStmt, nOrdinal);
	if (bOK && pStmt != NULL && pStmt->IsOpen())
	{
		if (!m_bBindFile)
			bOK = pStmt->SqlCheck(::SQLBindCol(pStmt->GetHandle(), nOrdinal,
				SQL_C_DEFAULT, NULL, 0, NULL));
		else
			bOK = pStmt->SqlCheck(::SQLBindFileToCol(pStmt->GetHandle(), nOrdinal,
				NULL, NULL, NULL, 0, NULL, NULL));
	}

	return bOK;
}

CSqlField& CSqlField::operator=(const CSqlField& rValue)
{
	if (this != &rValue)
	{
		CopyData(rValue);
		m_bBindFile = rValue.m_bBindFile;
		m_nFileOptions = rValue.m_nFileOptions;
		m_strName = rValue.m_strName;
		m_bNullable = rValue.m_bNullable;
		m_nOrdinal = rValue.m_nOrdinal;
	}
	return *this;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品国产免费网站| 欧美精品亚洲二区| 在线看日本不卡| 精品欧美一区二区在线观看| 最新国产成人在线观看| 久久精品国产精品亚洲精品| 成人av免费观看| 精品久久国产字幕高潮| 亚洲国产精品一区二区久久| 国产九色sp调教91| 欧美一区日韩一区| 一区二区三区色| 波多野结衣精品在线| 精品美女在线观看| 日韩精品欧美成人高清一区二区| aaa欧美日韩| 国产欧美一区二区精品性色超碰| 日韩成人免费看| 欧美日韩一级片网站| 国产精品二三区| 成人午夜免费视频| 国产日产精品1区| 精品一区二区三区免费毛片爱| 欧美日韩免费电影| 一区二区在线免费| 色综合天天视频在线观看| 国产欧美日韩一区二区三区在线观看| 日韩精品一二三| 91麻豆精品国产91久久久久| 亚洲第一狼人社区| 在线观看av不卡| 亚洲综合丁香婷婷六月香| 一本一道久久a久久精品综合蜜臀| 久久精品欧美一区二区三区麻豆| 国产一区二区三区在线观看精品 | 欧美日韩日日夜夜| 亚洲欧美日韩综合aⅴ视频| 成人av在线资源| 中文字幕日本不卡| 一本大道久久a久久综合| 一区在线观看免费| 99视频在线观看一区三区| 国产精品你懂的在线欣赏| 欧美综合亚洲图片综合区| 亚洲精品国产无天堂网2021| 91亚洲永久精品| 亚洲激情图片小说视频| 欧美丝袜丝交足nylons图片| 香港成人在线视频| 欧美一区二区成人| 国产一区二区三区精品视频| 久久久www成人免费毛片麻豆 | 成人激情开心网| 国产精品久久久久一区二区三区 | 国产精品久久久久婷婷二区次| 成人av免费在线| 亚洲国产欧美在线| 日韩午夜精品电影| 国产v日产∨综合v精品视频| 亚洲精品成人天堂一二三| 欧美日韩久久一区| 国产伦精品一区二区三区免费迷 | 日韩欧美的一区二区| 国产麻豆精品95视频| 椎名由奈av一区二区三区| 欧美日韩在线精品一区二区三区激情| 青椒成人免费视频| 亚洲欧美在线aaa| 337p亚洲精品色噜噜噜| 国产老妇另类xxxxx| 亚洲国产中文字幕| 久久久亚洲综合| 欧美亚洲一区二区在线| 国产一区二区不卡在线| 一区二区三区在线免费| 精品福利视频一区二区三区| 97成人超碰视| 蓝色福利精品导航| 一级精品视频在线观看宜春院| 欧美www视频| 欧美三级在线播放| 高潮精品一区videoshd| 视频在线在亚洲| 亚洲日本va午夜在线影院| 日韩精品一区二| 欧美伊人精品成人久久综合97| 国产成人自拍网| 日韩和的一区二区| 亚洲精品伦理在线| 久久精品亚洲精品国产欧美kt∨ | 亚洲一区二区av在线| 2017欧美狠狠色| 欧美放荡的少妇| 94-欧美-setu| 国产不卡高清在线观看视频| 天使萌一区二区三区免费观看| 国产精品国产三级国产普通话三级| 欧美一级片在线观看| 欧美亚洲自拍偷拍| 91小视频免费看| 大白屁股一区二区视频| 麻豆精品视频在线观看| 香蕉乱码成人久久天堂爱免费| 五月天视频一区| 一个色综合网站| 一区二区三区精品视频在线| 国产精品久久三| 国产日韩精品一区二区三区在线| 欧美成人精精品一区二区频| 欧美精品一二三| 欧美猛男男办公室激情| 欧美日韩综合在线| 日本高清不卡视频| 91蝌蚪porny| 91亚洲精品乱码久久久久久蜜桃 | 成人福利视频在线| 国产精品综合网| 国产成人av一区二区三区在线观看| 麻豆国产欧美日韩综合精品二区 | 在线播放国产精品二区一二区四区| 91亚洲精品久久久蜜桃网站| www.亚洲免费av| 国产白丝精品91爽爽久久| 国产成人综合在线观看| 粉嫩蜜臀av国产精品网站| 不卡av免费在线观看| av在线播放成人| 91国产福利在线| 欧美乱熟臀69xxxxxx| 欧美一卡在线观看| 久久久久国产精品免费免费搜索 | 制服丝袜亚洲播放| 日韩一级大片在线观看| 精品日韩av一区二区| 2024国产精品视频| 成人欧美一区二区三区小说| 亚洲精品伦理在线| 日本aⅴ精品一区二区三区 | 亚洲欧美日韩国产综合在线| 亚洲精品老司机| 日本欧美大码aⅴ在线播放| 捆绑调教美女网站视频一区| 成人一区二区三区中文字幕| 97久久超碰国产精品| 欧美日韩在线一区二区| 精品国产不卡一区二区三区| 国产亲近乱来精品视频| 亚洲综合小说图片| 极品少妇一区二区三区精品视频 | 亚洲成人午夜电影| 精品一区二区在线观看| 不卡av在线免费观看| 欧美视频在线观看一区二区| 亚洲精品在线观看视频| 亚洲三级在线观看| 男人的j进女人的j一区| 欧美美女视频在线观看| 欧美激情一区不卡| 亚洲大片免费看| 国产不卡视频在线观看| 欧美日韩国产精品自在自线| 久久欧美中文字幕| 亚洲r级在线视频| 国产 欧美在线| 欧美一区二区三区日韩| 国产精品国产三级国产普通话三级 | 在线精品视频免费播放| 亚洲精品在线三区| 亚洲va欧美va国产va天堂影院| 国产成人精品免费看| 7777精品伊人久久久大香线蕉完整版| 中文字幕巨乱亚洲| 免费不卡在线观看| 色天天综合色天天久久| 久久久精品免费网站| 天堂久久久久va久久久久| 99久久精品免费看国产| 久久亚洲综合色一区二区三区 | 奇米精品一区二区三区在线观看| 成人av在线网站| 久久久久久久av麻豆果冻| 日韩精品高清不卡| 欧美写真视频网站| 中文字幕视频一区| 国产一二精品视频| 欧美成人一区二区三区| 天使萌一区二区三区免费观看| 91丨九色丨黑人外教| 国产拍揄自揄精品视频麻豆| 狠狠色狠狠色综合日日91app| 欧美精选午夜久久久乱码6080| 一区二区三区精品| 色综合天天在线| 亚洲欧美日韩国产综合| 成人免费看视频| 欧美激情中文字幕| 国产·精品毛片| 国产精品―色哟哟| 成人听书哪个软件好| 欧美极品aⅴ影院|