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

📄 connect2.c

📁 在Linux/Unix下面访问WINDOWS SQLSERVER 的ODBC驱动程序
💻 C
字号:
#include "common.h"/* * Test setting current "catalog" before and after connection using * either SQLConnect and SQLDriverConnect */static char software_version[] = "$Id: connect2.c,v 1.4 2007/04/12 07:49:30 freddy77 Exp $";static void *no_unused_var_warn[] = { software_version, no_unused_var_warn };static int failed = 0;static void init_connect(void);static voidinit_connect(void){	if (SQLAllocEnv(&Environment) != SQL_SUCCESS) {		printf("Unable to allocate env\n");		exit(1);	}	if (SQLAllocConnect(Environment, &Connection) != SQL_SUCCESS) {		printf("Unable to allocate connection\n");		SQLFreeEnv(Environment);		exit(1);	}}static voidnormal_connect(void){	int res;	res = SQLConnect(Connection, (SQLCHAR *) SERVER, SQL_NTS, (SQLCHAR *) USER, SQL_NTS, (SQLCHAR *) PASSWORD, SQL_NTS);	if (!SQL_SUCCEEDED(res)) {		fprintf(stderr, "Unable to open data source (ret=%d)\n", res);		CheckReturn();		exit(1);	}}static voiddriver_connect(const char *conn_str){	char tmp[1024];	SQLSMALLINT len;	int res;	res = SQLDriverConnect(Connection, NULL, (SQLCHAR *) conn_str, SQL_NTS, (SQLCHAR *) tmp, sizeof(tmp), &len, SQL_DRIVER_NOPROMPT);	if (!SQL_SUCCEEDED(res)) {		fprintf(stderr, "Unable to open data source (ret=%d)\n", res);		CheckReturn();		exit(1);	}}static voidcheck_dbname(const char *dbname){	SQLINTEGER len;	char out[512];	int res;	len = sizeof(out);	res = SQLGetConnectAttr(Connection, SQL_ATTR_CURRENT_CATALOG, (SQLPOINTER) out, sizeof(out), &len);	if (!SQL_SUCCEEDED(res)) {		fprintf(stderr, "Unable to get database name to %s\n", dbname);		CheckReturn();		exit(1);	}	if (strcmp(out, dbname) != 0) {		fprintf(stderr, "Current database (%s) is not %s\n", out, dbname);		failed = 1;	}}static voidset_dbname(const char *dbname){	int res;	res = SQLSetConnectAttr(Connection, SQL_ATTR_CURRENT_CATALOG, (SQLPOINTER) dbname, strlen(dbname));	if (!SQL_SUCCEEDED(res)) {		fprintf(stderr, "Unable to set database name to %s\n", dbname);		CheckReturn();		exit(1);	}}intmain(int argc, char *argv[]){	char tmp[1024];	int res;	if (read_login_info())		exit(1);	/* try setting db name before connect */	printf("SQLConnect before 1..\n");	init_connect();	set_dbname("master");	normal_connect();	check_dbname("master");	/* check change after connection */	printf("SQLConnect after..\n");	set_dbname("tempdb");	check_dbname("tempdb");	printf("SQLConnect after not existing..\n");	strcpy(tmp, "IDontExist");	res = SQLSetConnectAttr(Connection, SQL_ATTR_CURRENT_CATALOG, (SQLPOINTER) tmp, strlen(tmp));	if (res != SQL_ERROR) {		fprintf(stderr, "SQLSetConnectAttr should fail\n");		return 1;	}	check_dbname("tempdb");	Disconnect();	/* try setting db name before connect */	printf("SQLConnect before 2..\n");	init_connect();	set_dbname("tempdb");	normal_connect();	check_dbname("tempdb");	Disconnect();	/* try connect string with using DSN */	printf("SQLDriverConnect before 1..\n");	sprintf(tmp, "DSN=%s;UID=%s;PWD=%s;DATABASE=%s;", SERVER, USER, PASSWORD, DATABASE);	init_connect();	set_dbname("master");	driver_connect(tmp);	check_dbname(DATABASE);	Disconnect();	/* try connect string with using DSN */	printf("SQLDriverConnect before 2..\n");	sprintf(tmp, "DSN=%s;UID=%s;PWD=%s;", SERVER, USER, PASSWORD);	init_connect();	set_dbname("tempdb");	driver_connect(tmp);	check_dbname("tempdb");	Disconnect();	if (failed) {		printf("Some tests failed\n");		return 1;	}	printf("Done.\n");	return 0;}

⌨️ 快捷键说明

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