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

📄 sql.asm

📁 用ASM实现Server及sql操作
💻 ASM
字号:
ShellSqlQueryPort	proc uses ebx
	LOCAL hEnv:DWORD,hDBC:DWORD,hSTMT:DWORD
	LOCAL TmpBuff[50]:BYTE
	LOCAL hRet:DWORD
	or ebx,-1
	invoke SQLAllocEnv,addr hEnv
	.if ax == SQL_SUCCESS
		invoke SQLSetEnvAttr,hEnv,SQL_ATTR_ODBC_VERSION,SQL_OV_ODBC3,0
		.if ax == SQL_SUCCESS
			invoke SQLAllocConnect,hEnv,addr hDBC
			.if ax == SQL_SUCCESS
				invoke SQLConnect,hDBC,STEXT('Cqbywg'),SQL_NTS,STEXT('WgUser'),SQL_NTS,0,SQL_NTS
				.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
					invoke SQLAllocHandle,SQL_HANDLE_STMT,hDBC,addr hSTMT
					.if ax == SQL_SUCCESS
						invoke SQLExecDirect,hSTMT,STEXT('SELECT Port_ID1,Port_ID2,Port_ID3,Port_ID4 FROM T_PortsInfo'),SQL_NTS
						.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
							invoke SQLFetch,hSTMT
							.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
								mov TmpBuff,0
								invoke SQLGetData,hSTMT,1,SQL_C_ULONG,addr TmpBuff,4,addr hRet
								mov eax,dword ptr TmpBuff
								mov hLogonPort1,eax
								invoke SQLGetData,hSTMT,2,SQL_C_ULONG,addr TmpBuff,4,addr hRet
								mov eax,dword ptr TmpBuff
								mov hLogonPort2,eax
								invoke SQLGetData,hSTMT,3,SQL_C_ULONG,addr TmpBuff,4,addr hRet
								mov eax,dword ptr TmpBuff
								mov hLogonPort3,eax
								invoke SQLGetData,hSTMT,4,SQL_C_ULONG,addr TmpBuff,4,addr hRet
								mov eax,dword ptr TmpBuff
								mov hLogonPort4,eax
								xor ebx,ebx
							.endif
						.endif
						invoke SQLFreeHandle,SQL_HANDLE_STMT,hSTMT
					.endif
				.endif
				invoke SQLDisconnect,hDBC
				invoke SQLFreeHandle,SQL_HANDLE_DBC,hDBC
			.endif
		.endif
		invoke SQLFreeHandle,SQL_HANDLE_ENV,hEnv
	.endif
	mov eax,ebx
	ret
ShellSqlQueryPort	endp

ShellSqlCmpVer	proc uses esi ebx lpCommand:DWORD,lpVer:DWORD
	LOCAL hEnv:DWORD,hDBC:DWORD,hSTMT:DWORD
	LOCAL TmpBuff[50]:BYTE
	LOCAL hRet:DWORD
	or ebx,-1
	xor esi,esi
	invoke SQLAllocEnv,addr hEnv
	.if ax == SQL_SUCCESS
		invoke SQLSetEnvAttr,hEnv,SQL_ATTR_ODBC_VERSION,SQL_OV_ODBC3,0
		.if ax == SQL_SUCCESS
			invoke SQLAllocConnect,hEnv,addr hDBC
			.if ax == SQL_SUCCESS
				invoke SQLConnect,hDBC,STEXT('Cqbywg'),SQL_NTS,STEXT('WgUser'),SQL_NTS,0,SQL_NTS
				.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
					invoke SQLAllocHandle,SQL_HANDLE_STMT,hDBC,addr hSTMT
					.if ax == SQL_SUCCESS
						invoke SQLExecDirect,hSTMT,lpCommand,SQL_NTS
						.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
							invoke SQLFetch,hSTMT
							.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
								mov TmpBuff,0
								invoke SQLGetData,hSTMT,1,SQL_C_CHAR,addr TmpBuff,sizeof TmpBuff,addr hRet
								invoke SQLGetData,hSTMT,2,SQL_C_BIT,addr TmpBuff+20,4,addr hRet
								mov esi,dword ptr TmpBuff+20
								invoke htodw,addr TmpBuff
								.if al == byte ptr lpVer
									xor ebx,ebx
								.endif
							.endif
						.endif
						invoke SQLFreeHandle,SQL_HANDLE_STMT,hSTMT
					.endif
				.endif
				invoke SQLDisconnect,hDBC
				invoke SQLFreeHandle,SQL_HANDLE_DBC,hDBC
			.endif
		.endif
		invoke SQLFreeHandle,SQL_HANDLE_ENV,hEnv
	.endif
	mov eax,ebx
	mov edx,esi
	ret
ShellSqlCmpVer	endp

ShellSqlFindUser	proc uses ebx lpCommand:DWORD,lpBuff:DWORD
	LOCAL hEnv:DWORD,hDBC:DWORD,hSTMT:DWORD
	LOCAL TmpBuff[MAX_PATH]:BYTE
	LOCAL hRet:DWORD
	or ebx,-1
	mov eax,lpBuff
	mov dword ptr [eax],0
	invoke SQLAllocEnv,addr hEnv
	.if ax == SQL_SUCCESS
		invoke SQLSetEnvAttr,hEnv,SQL_ATTR_ODBC_VERSION,SQL_OV_ODBC3,0
		.if ax == SQL_SUCCESS
			invoke SQLAllocConnect,hEnv,addr hDBC
			.if ax == SQL_SUCCESS
				invoke SQLConnect,hDBC,STEXT('Cqbywg'),SQL_NTS,STEXT('WgUser'),SQL_NTS,0,SQL_NTS
				;invoke SQLDriverConnect,hDBC,hWnd,STEXT('DRIVER={Microsoft Access Driver (*.mdb)};DBQ=F:\MENU\SERVER\Cqbywg.mdb'),SQL_NTS,addr TmpBuff,sizeof TmpBuff,addr hRet,SQL_DRIVER_COMPLETE
				;invoke SQLDriverConnect,hDBC,hWnd,STEXT('DSN=Cqbywg;UID=WgUser;PWD=sa;APP=BywgServer;WSID=BYWG;DB=Cqbywg'),SQL_NTS,addr TmpBuff,sizeof TmpBuff,addr hRet,SQL_DRIVER_COMPLETE
				.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
					invoke SQLAllocStmt,hDBC,addr hSTMT
					.if ax == SQL_SUCCESS
						invoke SQLExecDirect,hSTMT,lpCommand,SQL_NTS
						.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
							invoke SQLFetch,hSTMT
							.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
								mov eax,lpBuff
								mov byte ptr [eax],0
								invoke SQLGetData,hSTMT,1,SQL_C_CHAR,lpBuff,50,addr hRet
								xor ebx,ebx
							.endif
						.endif
						invoke SQLFreeStmt,hSTMT,SQL_CLOSE
					.endif
				.endif
				invoke SQLDisconnect,hDBC
				invoke SQLFreeConnect,hDBC
			.endif
		.endif
		invoke SQLFreeEnv,hEnv
	.endif
	mov eax,ebx
	ret
ShellSqlFindUser	endp

ShellSqlQueryUser	proc uses ebx lpCommand:DWORD
	LOCAL hEnv:DWORD,hDBC:DWORD,hSTMT:DWORD
	LOCAL TmpBuff[50]:BYTE
	LOCAL hRet:DWORD
	or ebx,-1
	invoke SQLAllocEnv,addr hEnv
	.if ax == SQL_SUCCESS
		invoke SQLSetEnvAttr,hEnv,SQL_ATTR_ODBC_VERSION,SQL_OV_ODBC3,0
		.if ax == SQL_SUCCESS
			invoke SQLAllocConnect,hEnv,addr hDBC
			.if ax == SQL_SUCCESS
				invoke SQLConnect,hDBC,STEXT('Cqbywg'),SQL_NTS,STEXT('WgUser'),SQL_NTS,0,SQL_NTS
				.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
					invoke SQLAllocHandle,SQL_HANDLE_STMT,hDBC,addr hSTMT
					.if ax == SQL_SUCCESS
						invoke SQLExecDirect,hSTMT,lpCommand,SQL_NTS
						.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
							invoke SQLFetch,hSTMT
							.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
								mov TmpBuff,0
								invoke SQLGetData,hSTMT,1,SQL_C_CHAR,addr TmpBuff,sizeof TmpBuff,addr hRet
								invoke atodw,addr TmpBuff
								mov ebx,eax
							.endif
						.endif
						invoke SQLFreeHandle,SQL_HANDLE_STMT,hSTMT
					.endif
				.endif
				invoke SQLDisconnect,hDBC
				invoke SQLFreeHandle,SQL_HANDLE_DBC,hDBC
			.endif
		.endif
		invoke SQLFreeHandle,SQL_HANDLE_ENV,hEnv
	.endif
	mov eax,ebx
	ret
ShellSqlQueryUser	endp

ShellSqlExecCommand	proc uses ebx lpCommand:DWORD
	LOCAL hEnv:DWORD,hDBC:DWORD,hSTMT:DWORD
	LOCAL TmpBuff[128]:BYTE
	or ebx,-1
	invoke SQLAllocEnv,addr hEnv
	.if ax == SQL_SUCCESS
		invoke SQLSetEnvAttr,hEnv,SQL_ATTR_ODBC_VERSION,SQL_OV_ODBC3,0
		.if ax == SQL_SUCCESS
			invoke SQLAllocConnect,hEnv,addr hDBC
			.if ax == SQL_SUCCESS
				invoke SQLConnect,hDBC,STEXT('Cqbywg'),SQL_NTS,STEXT('WgUser'),SQL_NTS,0,SQL_NTS
				.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
					invoke SQLAllocHandle,SQL_HANDLE_STMT,hDBC,addr hSTMT
					.if ax == SQL_SUCCESS
						invoke SQLExecDirect,hSTMT,lpCommand,SQL_NTS
						.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
							xor ebx,ebx
						.endif
						invoke SQLFreeHandle,SQL_HANDLE_STMT,hSTMT
					.endif
				.endif
				invoke SQLDisconnect,hDBC
				invoke SQLFreeHandle,SQL_HANDLE_DBC,hDBC
			.endif
		.endif
		invoke SQLFreeHandle,SQL_HANDLE_ENV,hEnv
	.endif
	mov eax,ebx
	ret
ShellSqlExecCommand	endp

ShellSqlGetTipInfo	proc uses ebx lpCommand:DWORD,lpBuff:DWORD
	LOCAL hEnv:DWORD,hDBC:DWORD,hSTMT:DWORD,hRet:DWORD
	LOCAL TmpBuff[20]:BYTE
	or ebx,-1
	invoke SQLAllocEnv,addr hEnv
	.if ax == SQL_SUCCESS
		invoke SQLSetEnvAttr,hEnv,SQL_ATTR_ODBC_VERSION,SQL_OV_ODBC3,0
		.if ax == SQL_SUCCESS
			invoke SQLAllocConnect,hEnv,addr hDBC
			.if ax == SQL_SUCCESS
				invoke SQLConnect,hDBC,STEXT('Cqbywg'),SQL_NTS,STEXT('WgUser'),SQL_NTS,0,SQL_NTS
				.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
					invoke SQLAllocHandle,SQL_HANDLE_STMT,hDBC,addr hSTMT
					.if ax == SQL_SUCCESS
						invoke SQLExecDirect,hSTMT,lpCommand,SQL_NTS
						.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
							invoke SQLFetch,hSTMT
							.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
								invoke SQLGetData,hSTMT,1,SQL_C_BIT,addr TmpBuff,4,addr hRet
								mov eax,lpBuff
								mov byte ptr [eax],0
								invoke SQLGetData,hSTMT,2,SQL_C_CHAR,lpBuff,100,addr hRet
								mov ebx,dword ptr TmpBuff
							.endif
						.endif
						invoke SQLFreeHandle,SQL_HANDLE_STMT,hSTMT
					.endif
				.endif
				invoke SQLDisconnect,hDBC
				invoke SQLFreeHandle,SQL_HANDLE_DBC,hDBC
			.endif
		.endif
		invoke SQLFreeHandle,SQL_HANDLE_ENV,hEnv
	.endif
	mov eax,ebx
	ret
ShellSqlGetTipInfo	endp

ShellSqlIsNetSingle	proc uses ebx lpCommand:DWORD
	LOCAL hEnv:DWORD,hDBC:DWORD,hSTMT:DWORD,hRet:DWORD
	LOCAL TmpBuff[20]:BYTE
	or ebx,-1
	invoke SQLAllocEnv,addr hEnv
	.if ax == SQL_SUCCESS
		invoke SQLSetEnvAttr,hEnv,SQL_ATTR_ODBC_VERSION,SQL_OV_ODBC3,0
		.if ax == SQL_SUCCESS
			invoke SQLAllocConnect,hEnv,addr hDBC
			.if ax == SQL_SUCCESS
				invoke SQLConnect,hDBC,STEXT('Cqbywg'),SQL_NTS,STEXT('WgUser'),SQL_NTS,0,SQL_NTS
				.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
					invoke SQLAllocHandle,SQL_HANDLE_STMT,hDBC,addr hSTMT
					.if ax == SQL_SUCCESS
						invoke SQLExecDirect,hSTMT,lpCommand,SQL_NTS
						.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
							invoke SQLFetch,hSTMT
							.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
								mov TmpBuff,0
								invoke SQLGetData,hSTMT,1,SQL_C_CHAR,addr TmpBuff,sizeof TmpBuff,addr hRet
								.if TmpBuff == 0
									xor ebx,ebx
								.else
									mov ebx,1
								.endif
							.endif
						.endif
						invoke SQLFreeHandle,SQL_HANDLE_STMT,hSTMT
					.endif
				.endif
				invoke SQLDisconnect,hDBC
				invoke SQLFreeHandle,SQL_HANDLE_DBC,hDBC
			.endif
		.endif
		invoke SQLFreeHandle,SQL_HANDLE_ENV,hEnv
	.endif
	mov eax,ebx
	ret
ShellSqlIsNetSingle	endp

ShellSqlQueryDword	proc uses ebx lpCommand:DWORD
	LOCAL hEnv:DWORD,hDBC:DWORD,hSTMT:DWORD
	LOCAL TmpBuff:DWORD
	LOCAL hRet:DWORD
	or ebx,-1
	invoke SQLAllocEnv,addr hEnv
	.if ax == SQL_SUCCESS
		invoke SQLSetEnvAttr,hEnv,SQL_ATTR_ODBC_VERSION,SQL_OV_ODBC3,0
		.if ax == SQL_SUCCESS
			invoke SQLAllocConnect,hEnv,addr hDBC
			.if ax == SQL_SUCCESS
				invoke SQLConnect,hDBC,STEXT('Cqbywg'),SQL_NTS,STEXT('WgUser'),SQL_NTS,0,SQL_NTS
				.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
					invoke SQLAllocHandle,SQL_HANDLE_STMT,hDBC,addr hSTMT
					.if ax == SQL_SUCCESS
						invoke SQLExecDirect,hSTMT,lpCommand,SQL_NTS
						.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
							invoke SQLFetch,hSTMT
							.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
								mov TmpBuff,0
								invoke SQLGetData,hSTMT,1,SQL_C_ULONG,addr TmpBuff,4,addr hRet
								mov ebx,TmpBuff
							.endif
						.endif
						invoke SQLFreeHandle,SQL_HANDLE_STMT,hSTMT
					.endif
				.endif
				invoke SQLDisconnect,hDBC
				invoke SQLFreeHandle,SQL_HANDLE_DBC,hDBC
			.endif
		.endif
		invoke SQLFreeHandle,SQL_HANDLE_ENV,hEnv
	.endif
	mov eax,ebx
	ret
ShellSqlQueryDword	endp

ShellSqlQueryUserSource	proc uses ebx lpCommand:DWORD,lpSupply:DWORD,lpIp:DWORD
	LOCAL hEnv:DWORD,hDBC:DWORD,hSTMT:DWORD
	LOCAL TmpBuff:DWORD
	LOCAL hRet:DWORD
	or ebx,-1
	invoke SQLAllocEnv,addr hEnv
	.if ax == SQL_SUCCESS
		invoke SQLSetEnvAttr,hEnv,SQL_ATTR_ODBC_VERSION,SQL_OV_ODBC3,0
		.if ax == SQL_SUCCESS
			invoke SQLAllocConnect,hEnv,addr hDBC
			.if ax == SQL_SUCCESS
				invoke SQLConnect,hDBC,STEXT('Cqbywg'),SQL_NTS,STEXT('WgUser'),SQL_NTS,0,SQL_NTS
				.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
					invoke SQLAllocHandle,SQL_HANDLE_STMT,hDBC,addr hSTMT
					.if ax == SQL_SUCCESS
						invoke SQLExecDirect,hSTMT,lpCommand,SQL_NTS
						.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
							invoke SQLFetch,hSTMT
							.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
								mov eax,lpSupply
								mov byte ptr [eax],0
								invoke SQLGetData,hSTMT,1,SQL_C_CHAR,lpSupply,50,addr hRet
								mov eax,lpSupply
								mov byte ptr [eax+6],0
								mov eax,lpIp
								mov byte ptr [eax],0
								invoke SQLGetData,hSTMT,2,SQL_C_CHAR,lpIp,20,addr hRet
								mov TmpBuff,0
								invoke SQLGetData,hSTMT,3,SQL_C_ULONG,addr TmpBuff,4,addr hRet
								mov bl,byte ptr TmpBuff
								mov TmpBuff,0
								invoke SQLGetData,hSTMT,4,SQL_C_ULONG,addr TmpBuff,4,addr hRet
								mov bh,byte ptr TmpBuff
								and ebx,0ffffh
							.endif
						.endif
						invoke SQLFreeHandle,SQL_HANDLE_STMT,hSTMT
					.endif
				.endif
				invoke SQLDisconnect,hDBC
				invoke SQLFreeHandle,SQL_HANDLE_DBC,hDBC
			.endif
		.endif
		invoke SQLFreeHandle,SQL_HANDLE_ENV,hEnv
	.endif
	mov eax,ebx
	ret
ShellSqlQueryUserSource	endp

ShellSqlQueryTime	proc uses ebx lpCommand:DWORD,lpTime:DWORD,lpNum:DWORD,lpCrd:DWORD
	LOCAL hEnv:DWORD,hDBC:DWORD,hSTMT:DWORD
	LOCAL hRet:DWORD
	or ebx,-1
	invoke SQLAllocEnv,addr hEnv
	.if ax == SQL_SUCCESS
		invoke SQLSetEnvAttr,hEnv,SQL_ATTR_ODBC_VERSION,SQL_OV_ODBC3,0
		.if ax == SQL_SUCCESS
			invoke SQLAllocConnect,hEnv,addr hDBC
			.if ax == SQL_SUCCESS
				invoke SQLConnect,hDBC,STEXT('Cqbywg'),SQL_NTS,STEXT('WgUser'),SQL_NTS,0,SQL_NTS
				.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
					invoke SQLAllocHandle,SQL_HANDLE_STMT,hDBC,addr hSTMT
					.if ax == SQL_SUCCESS
						invoke SQLExecDirect,hSTMT,lpCommand,SQL_NTS
						.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
							invoke SQLFetch,hSTMT
							.if ax == SQL_SUCCESS || ax == SQL_SUCCESS_WITH_INFO
								invoke MemFill,lpTime,sizeof SYSTEMTIME
								invoke SQLGetData,hSTMT,1,SQL_C_DATE,lpTime,sizeof SYSTEMTIME,addr hRet
								mov eax,lpNum
								mov dword ptr [eax],0
								invoke SQLGetData,hSTMT,2,SQL_C_ULONG,lpNum,4,addr hRet
								mov eax,lpCrd
								mov byte ptr [eax],0
								invoke SQLGetData,hSTMT,3,SQL_C_CHAR,lpCrd,50,addr hRet
								xor ebx,ebx
							.elseif ax == SQL_NO_DATA
								mov ebx,1
							.endif
						.elseif ax == SQL_NO_DATA
							mov ebx,1
						.endif
						invoke SQLFreeHandle,SQL_HANDLE_STMT,hSTMT
					.endif
				.endif
				invoke SQLDisconnect,hDBC
				invoke SQLFreeHandle,SQL_HANDLE_DBC,hDBC
			.endif
		.endif
		invoke SQLFreeHandle,SQL_HANDLE_ENV,hEnv
	.endif
	mov eax,ebx
	ret
ShellSqlQueryTime	endp

⌨️ 快捷键说明

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