关于C语言的一个问题。
我用MySql想做一个简单的数据库模拟登录,注册程序。然后我想在用户点击注册的时候,然后要注册的用户名已经在数据库里面了,就找到他的密码进行更新。
但是写了好久好久,还是无法更新数据。
请大家指点指点,
谢谢!
程序代码:
#define MAX_USERNAME 20
#define MAX_PASSWORD 20
#define MAX_SQLWORD 120
void SaveUser(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=root;DATABASE=mydb;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 tInputUserName[MAX_USERNAME];
TCHAR tInputPassWord[MAX_PASSWORD];
TCHAR tSql[MAX_SQLWORD+10];
GetDlgItemText(hwnd,IDC_EDITUSERNAME,tInputUserName,MAX_USERNAME);
GetDlgItemText(hwnd,IDC_EDITPASSWORD,tInputPassWord,MAX_PASSWORD);
wsprintf(tSql,"SELECT FPassWord FROM T_User WHERE FUserName='%s'",tInputUserName);//SELECT过滤一次,把FUserName是这个都过滤出来
result = SQLPrepare(hstmt,(SQLCHAR*)tSql,SQL_NTS);
CHECKDBSTMTERROR(hwnd,result,hstmt);
//////////////////////////////////////////////////////////////////////////
//result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
//result = SQLPrepare(hstmt,(SQLCHAR*)"UPDATE T_User SET FPassWord='eee' WHERE FUserName='A'",SQL_NTS);
//CHECKDBSTMTERROR(hwnd,result,hstmt);
//////////////////////////////////////////////////////////////////////////
result =SQLExecute(hstmt);
SQLINTEGER cbsatid=SQL_NTS;
while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)//找到相同的才进入循环,所以说有相同的用户名,然后就把他UPDATE
{
MessageBox(hwnd,TEXT("here"),TEXT(""),MB_OK);
TCHAR tUpDatePassWord[MAX_PASSWORD];
wsprintf(tUpDatePassWord,"UPDATE T_User SET FPassWord='%s' WHERE FUserName='%s'",tInputPassWord,tInputUserName);//SELECT后,找到的密码都更新
result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
result = SQLPrepare(hstmt,(SQLCHAR*)tUpDatePassWord,SQL_NTS);
CHECKDBSTMTERROR(hwnd,result,hstmt);
break;
}
CHECKDBSTMTERROR(hwnd,result,hstmt);
SQLFreeStmt(hstmt,SQL_CLOSE);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
SQLFreeHandle(SQL_HANDLE_ENV,henv);
MessageBox(hwnd,TEXT("执行SQL成功"),TEXT("SQL"),MB_OK|MB_ICONINFORMATION);
}









