现在的位置: 首页 > 综合 > 正文

void DBInsert(HWND hwnd) void DBLogin(HWND hwnd)

2013年10月07日 ⁄ 综合 ⁄ 共 3668字 ⁄ 字号 评论关闭
void DBInsert(HWND hwnd)
{
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLCHAR ConnStrIn[MAXBUFLEN] = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=127.0.0.1;UID=root;PWD=1234;DATABASE=test;CharSet=gbk;";
	SQLCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,
		ConnStrIn,SQL_NTS,
		ConnStrOut,MAXBUFLEN,
		(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);
		return;
	}
	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
	//SQL_NTS telling the function the previous parameter is Null-Terminated String,
	//please alculate the string length for me
	//insert into `test`.`t_person`(FAge,FName) values(12,'小明') 
	TCHAR UserName[256];
	TCHAR PassWord[256];
	GetDlgItemText(hwnd,IDC_USERNAME,UserName,sizeof(UserName));
	GetDlgItemText(hwnd,IDC_PASSWORD,PassWord,sizeof(PassWord));
	TCHAR strSQL[256];
	wsprintf(strSQL,"insert into T_users(FUserName,FPassWord) values('%s','%s')",UserName,PassWord);
	result = SQLPrepare(hstmt,(SQLCHAR*)strSQL,SQL_NTS);
	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
	MessageBox(hwnd,TEXT("插入成功"),TEXT("标题"),MB_OK);
 }

void DBLogin(HWND hwnd)
{
	SQLHENV henv = NULL;
	SQLHDBC hdbc = NULL;
	SQLHSTMT hstmt = NULL;
	SQLRETURN result;
	SQLCHAR ConnStrIn[MAXBUFLEN] = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=127.0.0.1;UID=root;PWD=1234;DATABASE=test;CharSet=gbk;";
	SQLCHAR ConnStrOut[MAXBUFLEN];
	//分配环境句柄
	result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE,&henv);
	//设置管理环境属性
	result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, 0);
	//分配连接句柄
	result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
	//设置连接属性
	result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,(void*)LOGIN_TIMEOUT, 0);
	//连接数据库
	result = SQLDriverConnect(hdbc,NULL,
		ConnStrIn,SQL_NTS,
		ConnStrOut,MAXBUFLEN,
		(SQLSMALLINT*)0,SQL_DRIVER_NOPROMPT);
	if(SQL_ERROR==result)
	{
		ShowDBConnError(hwnd,hdbc);
		return;
	}
	//初始化语句句柄
	result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

	TCHAR UserName[256];
	TCHAR PassWord[256];
	GetDlgItemText(hwnd,IDC_USERNAME,UserName,sizeof(UserName));
	GetDlgItemText(hwnd,IDC_PASSWORD,PassWord,sizeof(PassWord));
	TCHAR strSQL[256];
	wsprintf(strSQL,"select FUserName,FPassWord from T_users where FUserName='%s'",UserName);
	//SQL_NTS telling the function the previous parameter is Null-Terminated String,
	//please alculate the string length for me
	result = SQLPrepare(hstmt,(SQLCHAR*)strSQL,SQL_NTS);
	CHECKDBSTMTERROR(hwnd,result,hstmt);
	result =SQLExecute(hstmt);
	CHECKDBSTMTERROR(hwnd,result,hstmt);
/*
	SQLINTEGER cbsatid=SQL_NTS;
	while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	{
	 SQLCHAR name[20];
	 SQLGetData(hstmt,1,SQL_C_CHAR,name,20,&cbsatid);
	 MessageBox(hwnd,(char*)name,"showname",MB_OK);
	}
//*/
	if (SQLFetch(hstmt)==SQL_NO_DATA_FOUND)
	{
		MessageBox(hwnd,TEXT("用户不存在!"),TEXT("标题"),MB_OK);
	}
	else
	{
	 SQLINTEGER cbsatid=SQL_NTS;
	 //while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
	 {
		  SQLCHAR name[20];
		  SQLGetData(hstmt,1,SQL_C_CHAR,name,20,&cbsatid);
		  //MessageBox(hwnd,(char*)name,"showname",MB_OK);

		  //SQLINTEGER i;
		  char passwrd[256];
		  SQLGetData(hstmt,2,SQL_C_CHAR,passwrd,sizeof(passwrd),&cbsatid);
		  //MessageBox(hwnd,itoa(i,passwrd,10),"passwrd",MB_OK);
		  if (0==lstrcmp(passwrd,PassWord))
		  {
			MessageBox(hwnd,"登陆成功","!",MB_OK);
		  } 
		  else
		  {
			MessageBox(hwnd,"登陆失败","!",MB_OK);
		  }

	 }
	}
	SQLFreeStmt(hstmt,SQL_CLOSE);
	SQLDisconnect(hdbc);
	SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
	SQLFreeHandle(SQL_HANDLE_ENV,henv);
	//MessageBox(hwnd,TEXT("登陆成功"),TEXT("标题"),MB_OK);
}

抱歉!评论已关闭.