sqlsetconnectattr.c

来自「这个是内存数据库的客户端」· C语言 代码 · 共 160 行

C
160
字号
/* * The contents of this file are subject to the MonetDB Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://monetdb.cwi.nl/Legal/MonetDBLicense-1.1.html * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * The Original Code is the MonetDB Database System. * * The Initial Developer of the Original Code is CWI. * Portions created by CWI are Copyright (C) 1997-2007 CWI. * All Rights Reserved. *//* * This code was created by Peter Harvey (mostly during Christmas 98/99). * This code is LGPL. Please ensure that this message remains in future * distributions and uses of this code (thats about all I get out of it). * - Peter Harvey pharvey@codebydesign.com *  * This file has been modified for the MonetDB project.  See the file * Copyright in this directory for more information. *//********************************************************************** * SQLSetConnectAttr() * CLI Compliance: ISO 92 * * Author: Martin van Dinther * Date  : 30 Aug 2002 * **********************************************************************/#include "ODBCGlobal.h"#include "ODBCDbc.h"#include "ODBCUtil.h"SQLRETURNSQLSetConnectAttr_(ODBCDbc *dbc, SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength){	(void) StringLength;	/* Stefan: unused!? */	switch (Attribute) {	case SQL_ATTR_AUTOCOMMIT:		switch ((SQLUINTEGER) (size_t) ValuePtr) {		case SQL_AUTOCOMMIT_ON:		case SQL_AUTOCOMMIT_OFF:			dbc->sql_attr_autocommit = (SQLUINTEGER) (size_t) ValuePtr;#ifdef ODBCDEBUG			ODBCLOG("SQLSetConnectAttr set autocommit %s\n", dbc->sql_attr_autocommit == SQL_AUTOCOMMIT_ON ? "on" : "off");#endif			if (dbc->mid)				mapi_setAutocommit(dbc->mid, dbc->sql_attr_autocommit == SQL_AUTOCOMMIT_ON);			break;		default:			/* Invalid attribute value */			addDbcError(dbc, "HY024", NULL, 0);			return SQL_ERROR;		}		return SQL_SUCCESS;		/* TODO: implement connection attribute behavior */	case SQL_ATTR_ACCESS_MODE:	case SQL_ATTR_ASYNC_ENABLE:	case SQL_ATTR_CONNECTION_TIMEOUT:	case SQL_ATTR_CURRENT_CATALOG:	case SQL_ATTR_LOGIN_TIMEOUT:	case SQL_ATTR_METADATA_ID:	case SQL_ATTR_ODBC_CURSORS:	case SQL_ATTR_PACKET_SIZE:	case SQL_ATTR_QUIET_MODE:	case SQL_ATTR_TRACE:	case SQL_ATTR_TRACEFILE:	case SQL_ATTR_TRANSLATE_LIB:	case SQL_ATTR_TRANSLATE_OPTION:	case SQL_ATTR_TXN_ISOLATION:		/* Optional feature not implemented */		addDbcError(dbc, "HYC00", NULL, 0);		return SQL_ERROR;	case SQL_ATTR_AUTO_IPD:	/* read-only attribute */	case SQL_ATTR_CONNECTION_DEAD:	default:		/* Invalid attribute/option identifier */		addDbcError(dbc, "HY092", NULL, 0);		break;	}	return SQL_SUCCESS;}SQLRETURN SQL_APISQLSetConnectAttr(SQLHDBC ConnectionHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength){#ifdef ODBCDEBUG	ODBCLOG("SQLSetConnectAttr " PTRFMT " %d\n", PTRFMTCAST ConnectionHandle, Attribute);#endif	if (!isValidDbc((ODBCDbc *) ConnectionHandle))		return SQL_INVALID_HANDLE;	clearDbcErrors((ODBCDbc *) ConnectionHandle);	return SQLSetConnectAttr_((ODBCDbc *) ConnectionHandle, Attribute, ValuePtr, StringLength);}#ifdef WITH_WCHARSQLRETURN SQL_APISQLSetConnectAttrA(SQLHDBC ConnectionHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength){	return SQLSetConnectAttr(ConnectionHandle, Attribute, ValuePtr, StringLength);}SQLRETURN SQL_APISQLSetConnectAttrW(SQLHDBC ConnectionHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength){	ODBCDbc *dbc = (ODBCDbc *) ConnectionHandle;	SQLPOINTER ptr;	SQLINTEGER n;	SQLRETURN rc;#ifdef ODBCDEBUG	ODBCLOG("SQLSetConnectAttrW " PTRFMT " %d\n", PTRFMTCAST ConnectionHandle, Attribute);#endif	if (!isValidDbc(dbc))		return SQL_INVALID_HANDLE;	clearDbcErrors(dbc);	switch (Attribute) {	case SQL_ATTR_CURRENT_CATALOG:	case SQL_ATTR_TRACEFILE:	case SQL_ATTR_TRANSLATE_LIB:		if (StringLength > 0)	/* convert from bytes to characters */			StringLength /= 2;		fixWcharIn(ValuePtr, StringLength, SQLCHAR, ptr, addDbcError, dbc, return SQL_ERROR);		n = SQL_NTS;		break;	default:		ptr = ValuePtr;		n = StringLength;		break;	}	rc = SQLSetConnectAttr_(dbc, Attribute, ptr, n);	if (ptr &&ptr !=ValuePtr)		free(ptr);	return rc;}#endif /* WITH_WCHAR */

⌨️ 快捷键说明

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