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

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

?? sasql.c

?? cygwin環境編譯,saac登陸服務端,石器2最新代碼
?? C
字號:
#define _SASQL_C_#include "version.h"#ifdef _SASQL//新添加#include "main.h"#include <windows.h>#include <w32api/sql.h>#include <w32api/sqlext.h>HENV henv = SQL_NULL_HENV;HDBC hdbc = SQL_NULL_HDBC;HSTMT hstmt = SQL_NULL_HSTMT;RETCODE rc;	SQLCHAR sid[16]; 	SQLCHAR sps[16]; 	SQLINTEGER err;typedef struct tagConfig{    char    SQL_DSN[16];     char    SQL_USER[16];	  char	  SQL_PASSWORD[16];    char    SQL_INFOTABLE[16];    		char    SQL_LOCK[16];   				char    SQL_RegTime[16]; 				char    SQL_LoginTime[16]; 				char    SQL_OnlineName[16]; 		}Config;Config config;int AUTOREG;int USEMSSQL;void check_return (RETCODE rc,HENV henv,HDBC hdbc,HSTMT hstmt );static int readConfig( char *path ){    char buf[255];    FILE *fp;    fp = fopen( path , "r" );    if( fp == NULL ){ return -2; }    while( fgets( buf , sizeof( buf ) , fp )){        char command[255];        char param[255];        chop(buf);                easyGetTokenFromString( buf , 1 , command , sizeof( command ));        easyGetTokenFromString( buf , 2 , param , sizeof( param ));				if( strcmp( command , "USEMSSQL" ) == 0 ){        		USEMSSQL = atoi( param );        		if(USEMSSQL==0)break;      	}        if( strcmp( command , "SQL_DSN" ) == 0 ){            snprintf( config.SQL_DSN , sizeof( config.SQL_DSN) , param) ;            log("數據庫 DSN:%s\n",config.SQL_DSN);		 } else if( strcmp( command , "SQL_USER" ) == 0 ){            snprintf( config.SQL_USER , sizeof( config.SQL_USER) , param) ;				  	log("登陸數據庫賬號名:%s\n",config.SQL_USER);        } else if( strcmp( command , "SQL_PASSWORD" ) == 0 ){            snprintf( config.SQL_PASSWORD , sizeof( config.SQL_PASSWORD) , param) ;				  	log("登陸數據庫密碼:%s\n",config.SQL_PASSWORD);        } else if( strcmp( command , "SQL_INFOTABLE" ) == 0 ){            snprintf( config.SQL_INFOTABLE , sizeof( config.SQL_INFOTABLE) , param) ;				  	log("人物信息表:%s\n",config.SQL_INFOTABLE);        } else if( strcmp( command , "SQL_LOCK" ) == 0 ){            snprintf( config.SQL_LOCK , sizeof( config.SQL_LOCK) , param) ;						log("鎖定賬號表:%s\n",config.SQL_LOCK);        } else if( strcmp( command , "SQL_REGTIME" ) == 0 ){            snprintf( config.SQL_RegTime , sizeof( config.SQL_RegTime) , param) ;						log("注冊時間:%s\n",config.SQL_RegTime);				} else if( strcmp( command , "AUTOREG" ) == 0 ){        		AUTOREG = atoi( param );        		if(AUTOREG){        			log("開放自動注冊:YES\n");        		}else{        			log("開放自動注冊:NO\n");        		}      	}    }   	fclose(fp);    return 0;}BOOL sasql_init( void ){  readConfig("acserv.cf");  if(USEMSSQL==0)return TRUE;	char buf[257];	char ODBC[257];	short buflen;//	printf ("Initialize the environment structure.\n");	SQLAllocEnv (&henv);	//	printf ("Initialize the connection structure.\n");	SQLAllocConnect (henv,&hdbc);		printf("連接ODBC驅動器...");	sprintf(ODBC,"DSN=%s;UID=%s;PWD=%s;",config.SQL_DSN,config.SQL_USER,config.SQL_PASSWORD);	rc = SQLDriverConnect(hdbc,0,ODBC,SQL_NTS,(UCHAR*) buf,sizeof (buf),&buflen,SQL_DRIVER_COMPLETE);	check_return (rc,henv,hdbc,hstmt);	printf ("成功\n");	SQLAllocStmt (hdbc,&hstmt);	SQLBindCol(hstmt, 1, SQL_C_CHAR,&sid,16, &err);	SQLBindCol(hstmt, 2, SQL_C_CHAR,&sps,16, &err);}void sasql_close( void ){	if(USEMSSQL==0)return;//	printf ("Free the statement handle.\n");	SQLFreeStmt (hstmt,SQL_DROP);	//	printf ("Disconnect from the data source.\n");	SQLDisconnect (hdbc);	//	printf ("Free the connection structure.\n");	SQLFreeConnect (hdbc);	//	printf ("Free the environment structure.\n");	SQLFreeEnv (henv);}int sasql_query(char *id, char *ps){	if(USEMSSQL==0)return TRUE;	SQLCHAR sqlstr[128];	SQLCHAR szPass[64]={0};	SQLINTEGER cbPass;	SQLCancel(hstmt);	sprintf(sqlstr,"select * from %s where ID='%s'",config.SQL_INFOTABLE,id);	rc = SQLExecDirect( hstmt, sqlstr, SQL_NTS);	check_return (rc,henv,hdbc,hstmt);	if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) 	{  	while( SQL_SUCCESS == SQLFetch(hstmt) ){  		if(SQLGetData(hstmt, 2, SQL_C_CHAR, szPass, 50, &cbPass) == SQL_SUCCESS)  			if(strcmp(szPass,ps)==0){					return 1;				}else{					printf("賬號%s密碼錯誤!\n",id);					return 2;				}		}		printf("賬號%s未注冊!\n",id);		return 3;	}	return 0;}BOOL sasql_register(char *id, char *ps){	if(AUTOREG){		SQLCHAR sqlstr[128];		SQLCancel(hstmt);		sprintf(sqlstr,"select * from %s where ID='%s'",config.SQL_INFOTABLE,id);		rc = SQLExecDirect( hstmt, sqlstr, SQL_NTS);		check_return (rc,henv,hdbc,hstmt);		if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) 		{			while( SQL_SUCCESS == SQLFetch(hstmt) )				return FALSE;			SQLCancel(hstmt);			sprintf(sqlstr,"INSERT INTO %s (ID,PassWord,RegTime,Path) VALUES ('%s','%s',NOW(),'char/0x%x')",config.SQL_INFOTABLE, id, ps, getHash(id) & 0xff);			rc = SQLExecDirect( hstmt, sqlstr, SQL_NTS);			check_return (rc,henv,hdbc,hstmt);			if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO){				printf("新賬號%s注冊成功!\n",id);				return TRUE;			}		}	}	return FALSE;}void check_return (RETCODE rc,HENV henv,HDBC hdbc,HSTMT hstmt ){	UCHAR state_str [SQL_MAX_MESSAGE_LENGTH];	SDWORD native_error;	UCHAR error_msg [SQL_MAX_MESSAGE_LENGTH];	SWORD error_msg_avail = SQL_MAX_MESSAGE_LENGTH - 1;	SWORD error_msg_len;	RETCODE local_rc;		if (rc != SQL_ERROR && rc != SQL_SUCCESS_WITH_INFO )	{	return;	}		local_rc = SQLError(henv,hdbc,hstmt,state_str,&native_error,error_msg,error_msg_avail,&error_msg_len);	if (local_rc != SQL_SUCCESS && rc !=SQL_SUCCESS_WITH_INFO)	{		fprintf(stderr,"Uninterpretable error; exiting \n");		exit (EXIT_FAILURE);	}		if (rc == SQL_SUCCESS_WITH_INFO)	{		fprintf(stderr,"Fatal Error %s: %s\n", state_str,error_msg);		return;	}			fprintf(stderr,"Fatal Error %s: %s\n",state_str,error_msg); 		exit (EXIT_FAILURE);}BOOL sasql_craete_lock( void ){	char sqlstr[128];	SQLCancel(hstmt);	sprintf(sqlstr,"create table %s (Name varchar(16),PRIMARY KEY (Name));",config.SQL_LOCK);	rc = SQLExecDirect( hstmt, sqlstr, SQL_NTS);	check_return (rc,henv,hdbc,hstmt);	if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) 	{		printf("鎖定用戶表建立成功!\n");  	return TRUE;	}	printf("鎖定用戶表建立失敗!\n");	return FALSE;}BOOL sasql_craete_userinfo( void ){	char sqlstr[255];	SQLCancel(hstmt);	sprintf(sqlstr,"CREATE TABLE %s ("									"ID varchar(16) NOT NULL,"									"PassWord varchar(16) NOT NULL,"									"IP varchar(16),"									"RegTime datetime,"									"LoginTime datetime,"									"OnlineName varchar(32),"									"Online int,"									"Path varchar(10),"									"PRIMARY KEY (ID));",config.SQL_INFOTABLE);	rc = SQLExecDirect( hstmt, sqlstr, SQL_NTS);	check_return (rc,henv,hdbc,hstmt);	if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) 	{		printf("用戶信息表建立成功!\n");  	return TRUE;	}	printf("用戶信息表建立失敗!\n");	return FALSE;}BOOL sasql_chehk_lock( char *idip ){	char sqlstr[128];	SQLCancel(hstmt);	sprintf(sqlstr,"select * from %s where Name='%s'", config.SQL_LOCK, idip);	rc = SQLExecDirect( hstmt, sqlstr, SQL_NTS);	check_return (rc,henv,hdbc,hstmt);	if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) 	{		while( SQL_SUCCESS == SQLFetch(hstmt) )			return TRUE;	}	return FALSE;}BOOL sasql_add_lock( char *idip ){	char sqlstr[128];	SQLCancel(hstmt);		sprintf(sqlstr,"INSERT INTO %s (Name) VALUES ('%s')", config.SQL_LOCK, idip);	rc = SQLExecDirect( hstmt, sqlstr, SQL_NTS);	check_return (rc,henv,hdbc,hstmt);	if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) 	{		return TRUE;	}	return FALSE;}BOOL sasql_del_lock( char *idip ){	char sqlstr[128];	SQLCancel(hstmt);	sprintf(sqlstr,"delete from config.SQL_LOCK where Name='%s'", config.SQL_LOCK, idip);	rc = SQLExecDirect( hstmt, sqlstr, SQL_NTS);	check_return (rc,henv,hdbc,hstmt);	if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) 	{		return TRUE;	}	return FALSE;}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线丨porny丨国产| 国产一区在线不卡| 欧日韩精品视频| 亚洲综合av网| 欧美高清你懂得| 九一久久久久久| 国产亚洲一区字幕| 国产成人在线免费观看| 国产精品久久看| 91在线观看污| 天使萌一区二区三区免费观看| 欧美三级三级三级| 免费看精品久久片| 国产精品免费av| 欧美日韩亚洲高清一区二区| 日本一道高清亚洲日美韩| 久久综合九色综合欧美亚洲| hitomi一区二区三区精品| 亚洲综合偷拍欧美一区色| 日韩网站在线看片你懂的| 国产精品一品视频| 最新久久zyz资源站| 欧美日韩的一区二区| 国产麻豆一精品一av一免费| 亚洲色欲色欲www| 欧美福利电影网| 国产老妇另类xxxxx| 一区二区三区在线观看欧美| 日韩你懂的在线播放| 99精品视频一区二区| 日韩av不卡在线观看| 国产精品私人影院| 欧美日韩黄视频| 成人国产在线观看| 免费欧美高清视频| 国产精品国产馆在线真实露脸 | 欧美成人一区二区三区在线观看| 成人黄色小视频| 青娱乐精品视频| 国产精品毛片久久久久久| 91精品久久久久久久久99蜜臂| 福利视频网站一区二区三区| 亚洲成人动漫精品| 中文字幕一区二区在线观看 | 美国精品在线观看| 亚洲综合免费观看高清完整版 | 国产成人综合自拍| 日韩电影在线观看一区| 亚洲欧美日韩精品久久久久| 久久女同性恋中文字幕| 6080国产精品一区二区| 91在线观看下载| 国产成人免费在线视频| 九九视频精品免费| 日韩极品在线观看| 一区二区三区欧美亚洲| 国产精品入口麻豆九色| 久久久亚洲午夜电影| 6080日韩午夜伦伦午夜伦| 欧美午夜片在线看| 高清国产一区二区三区| 欧美精彩视频一区二区三区| 日韩视频一区二区| 欧美在线影院一区二区| 国产高清精品在线| 免费在线观看一区| 亚洲在线视频一区| 日韩免费一区二区| 精品国产麻豆免费人成网站| 91美女精品福利| 国产精品69久久久久水密桃| 日韩精彩视频在线观看| 亚洲一二三专区| 中文字幕一区二区三区在线观看| 日韩精品自拍偷拍| 欧美日韩午夜在线| 色婷婷激情久久| kk眼镜猥琐国模调教系列一区二区| 久久国产乱子精品免费女| 亚洲自拍偷拍图区| 亚洲欧美日本在线| 国产精品理论片在线观看| 一本一道久久a久久精品| 97aⅴ精品视频一二三区| 粉嫩aⅴ一区二区三区四区五区| 日本免费新一区视频| 天堂影院一区二区| 午夜国产精品一区| 一区二区三区四区五区视频在线观看| 国产精品私人自拍| 国产精品色眯眯| 欧美成人综合网站| 国产欧美日韩激情| 国产午夜亚洲精品不卡| 欧美一区二区黄色| 日韩女优视频免费观看| 欧美日韩国产一二三| 欧美日韩免费一区二区三区视频| 91久久香蕉国产日韩欧美9色| 99久久免费视频.com| 99久久99久久久精品齐齐| aa级大片欧美| 99国产精品久久久| 国产成人av在线影院| 国产美女久久久久| 成人精品小蝌蚪| 91美女视频网站| 欧美亚洲国产bt| 欧美撒尿777hd撒尿| 日韩欧美高清一区| 精品99999| 国产精品无遮挡| 亚洲男人的天堂在线aⅴ视频| 国产精品短视频| 中文一区二区在线观看| 亚洲伦理在线精品| 日本亚洲免费观看| 国产九色sp调教91| 欧美日韩视频在线第一区| 欧美午夜影院一区| 欧美一区二区高清| 中文字幕国产一区| 亚洲精品菠萝久久久久久久| 午夜精品一区二区三区电影天堂| 日本欧美久久久久免费播放网| 精品一区二区三区日韩| 国产酒店精品激情| 欧美理论电影在线| xnxx国产精品| 专区另类欧美日韩| 亚洲免费av高清| 亚洲午夜久久久久久久久电影院 | 国产成人在线看| 91福利在线播放| 欧美成人vps| 中文字幕欧美一| 日韩中文字幕区一区有砖一区 | 秋霞影院一区二区| av高清不卡在线| 日韩一区二区三区精品视频| 国产精品美女久久久久aⅴ| 亚洲欧美国产三级| 国产精品一区在线观看你懂的| 99久久国产综合精品麻豆| 欧美一区二区不卡视频| 国产精品不卡视频| 精品一区二区三区在线播放视频| 成+人+亚洲+综合天堂| 欧美日韩国产小视频| 中文成人av在线| 蜜桃视频第一区免费观看| 色哟哟精品一区| 国产日韩综合av| 日韩av一区二区在线影视| 福利电影一区二区| 欧美美女喷水视频| 自拍偷拍亚洲综合| 韩国v欧美v日本v亚洲v| 欧美人妖巨大在线| 亚洲人成小说网站色在线 | 日韩一区中文字幕| 精品一区二区三区在线播放| 欧美怡红院视频| 亚洲欧洲精品成人久久奇米网| 午夜精品国产更新| 成人aa视频在线观看| 久久综合九色综合欧美98| 日韩av一区二区在线影视| 在线精品亚洲一区二区不卡| 国产精品午夜在线观看| 精品中文字幕一区二区| 日韩欧美一区二区视频| 青青草国产成人99久久| 欧美制服丝袜第一页| 亚洲人成网站在线| 成人av在线资源网| 国产日韩v精品一区二区| 国产乱码一区二区三区| 欧美大片国产精品| 蜜臀久久99精品久久久久久9 | 久久99精品国产| 欧美中文字幕不卡| 青草国产精品久久久久久| 欧美精品色一区二区三区| 亚洲三级在线免费| 色欧美乱欧美15图片| 亚洲婷婷国产精品电影人久久| 成人综合婷婷国产精品久久免费| 国产精品美女久久久久av爽李琼| av一区二区三区黑人| 国产精品免费免费| 99久久久精品| 亚洲人精品一区| 欧美无砖砖区免费| 亚洲bdsm女犯bdsm网站| 欧美丰满嫩嫩电影| 麻豆成人免费电影| 国产亚洲一区二区三区在线观看| 国产二区国产一区在线观看 | 宅男噜噜噜66一区二区66|