1、代码如下:

#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
#include "resource.h"
#include "MainDlg.h"
#define LOGIN_TIMEOUT 30
#define MAXBUFLEN 255
#define CHECKDBSTMTERROR(hwnd,result,hstmt) if(SQL_ERROR==result){ShowDBStmtError(hwnd,hstmt);return;}BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{switch(uMsg){HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);}return FALSE;
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{return TRUE;
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{switch(id){case IDC_BUTTON_SAVE:SaveToDataBase(hwnd);break;case IDC_BUTTON_LOGIN:Login(hwnd);break;default:break;}
}
void Main_OnClose(HWND hwnd)
{EndDialog(hwnd, 0);
}
void ShowDBError(HWND hwnd,SQLSMALLINT type,SQLHANDLE sqlHandle)
{char pStatus[10], pMsg[101];SQLSMALLINT SQLmsglen;char error[200] = {0};SQLINTEGER SQLerr;long erg2 = SQLGetDiagRec(type, sqlHandle,1,(SQLCHAR *)pStatus,&SQLerr,(SQLCHAR *)pMsg,100,&SQLmsglen);wsprintf(error,"%s (%d)\n",pMsg,(int)SQLerr);MessageBox(hwnd,error,TEXT("数据库执行错误"),MB_ICONERROR|MB_OK);
}
void ShowDBConnError(HWND hwnd,SQLHDBC hdbc)
{
ShowDBError(hwnd,SQL_HANDLE_DBC,hdbc);
}
void ShowDBStmtError(HWND hwnd,SQLHSTMT hstmt)
{
ShowDBError(hwnd,SQL_HANDLE_STMT,hstmt);
}void SaveToDataBase(HWND hwnd)
{SQLHENV henv = NULL;SQLHDBC hdbc = NULL;SQLHSTMT hstmt = NULL;SQLRETURN result;SQLCHAR ConnStrIn[MAXBUFLEN] = "DRIVER={MySQL ODBC 5.3 ANSI Driver};SERVER=127.0.0.1;UID=root;PWD=226;DATABASE=userlogin;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 meTCHAR userName[20];GetDlgItemText(hwnd,IDC_EDIT_USERNAME,userName,sizeof(userName)/sizeof(TCHAR));TCHAR password[20];GetDlgItemText(hwnd,IDC_EDIT_PASSWORD,password,sizeof(password)/sizeof(TCHAR));TCHAR sql[255];wsprintf(sql,"insert into T_user(FuserName,Fpassword) values('%s','%s')",userName,password);result = SQLPrepare(hstmt,(SQLCHAR*)sql,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 Login(HWND hwnd)
{SQLHENV henv = NULL;SQLHDBC hdbc = NULL;SQLHSTMT hstmt = NULL;SQLRETURN result;SQLCHAR ConnStrIn[MAXBUFLEN] = "DRIVER={MySQL ODBC 5.3 ANSI Driver};SERVER=127.0.0.1;UID=root;PWD=226;DATABASE=userlogin;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 inputUserName[20];GetDlgItemText(hwnd,IDC_EDIT_USERNAME,inputUserName,sizeof(inputUserName)/sizeof(TCHAR));TCHAR inputPassword[20];GetDlgItemText(hwnd,IDC_EDIT_PASSWORD,inputPassword,sizeof(inputPassword)/sizeof(TCHAR));TCHAR sql[255];ZeroMemory(sql,sizeof(sql)/sizeof(TCHAR));wsprintf(sql,"select Fpassword from T_user where FuserName=%s",inputUserName);result = SQLPrepare(hstmt,(SQLCHAR*)"select FuserName,Fpassword from T_user ",SQL_NTS);CHECKDBSTMTERROR(hwnd,result,hstmt);result =SQLExecute(hstmt);CHECKDBSTMTERROR(hwnd,result,hstmt);SQLINTEGER cbsatid=SQL_NTS;BOOL found=FALSE;while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND){TCHAR password[20];SQLGetData(hstmt,2,SQL_C_CHAR,password,sizeof(password)/sizeof(TCHAR),&cbsatid);if(0==lstrcmp(inputPassword,password)){MessageBox(hwnd,TEXT("输入正确,登录成功"),TEXT("提示"),MB_OK);found=TRUE;break;}}if(FALSE==found){MessageBox(hwnd,TEXT("输入错误"),TEXT("报错"),MB_OK| MB_ICONERROR); }SQLFreeStmt(hstmt,SQL_CLOSE);SQLDisconnect(hdbc);SQLFreeHandle(SQL_HANDLE_DBC,hdbc);SQLFreeHandle(SQL_HANDLE_ENV,henv);}

2、数据库及数据表如下:

3、注意在编译的时候,在工程设置中添加连接库“odbc32.lib odbccp32.lib”。

4、运行效果如下:

C语言ODBC连接MySQL数据库制作简易用户登录系统相关推荐

  1. R语言之连接mysql数据库

    学习笔记 PS:写这个Blog的初衷是,心血来潮考古自己的Blog,看到3年前写的同一主题Blog,差点气到吐血,就重新写一遍了,顺便加一点R语言读取数据的其他方式. R语言之连接mysql数据库 从 ...

  2. python注册系统_Python制作简易注册登录系统

    Python制作简易注册登录系统 这篇文章主要为大家详细介绍了 Python 简易注册登录系统的制作方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Python 是一种面向对象.解释型计算机程 ...

  3. 杨亦涛老师分享PHP简易用户登录系统

    PHP简易用户登录系统 最近刚刚看到PHP连接数据库的实例,于是做了一个简易的用户系统 直接上代码 连接数据库:connect.php $servername = "localhost&qu ...

  4. mysql odbc c语言_C语言ODBC操作MySQL数据库(示例代码)

    数据库及其编程API来源于不同的背景,开发人员可以从众多的数据库中选择一种,每种数据库都有自己的一套编程API,这就为数据库编程造成了很大的局限性.SQL是标准化数据库编程接口的一种尝试,然而各种数据 ...

  5. Powerbuilder通过ODBC连接MySQL数据库

    [size=large] [b]前沿[/b] 练习PowerBuilder上通过ODBC链接MySQL数据库,为后期练习基于MySQL与PB的学生信息综合查询系统做准备. [b]环境[/b] 1. M ...

  6. 数据库设计:用户登录系统数据库表设计

    用户登录系统数据库表设计 最近看了看公司后台用户登录系统的设计, 比较混乱, 主要还是因为URS和Oauth以及URS第三方这三个登录形式各不相同导致的. 下面着重介绍一下涉及到第三方登录中需要注意的 ...

  7. .net odbc连接mysql数据库,下载安装MySQL数据库ODBC驱动和配置MySQL ODBC数据源

    1. 下载MySQL ODBC驱动: 打开的页面如下图所示,可根据实际使用情况选择下载相应的MSI安装程序,使用Visual C++ 6.0环境编程请下载32位MSI安装程序. 点击下载后出现如下页面 ...

  8. C/C++语言ODBC连接SqlServer数据库

    C/C++连接SqlServer数据库 C或C++语言ODBC方式连接SqlServer数据库,需要先正确配置数据源才能连接. VC6.0连接到数据库 VC2013连接到数据库 数据库创建一数据表 u ...

  9. C#使用ODBC连接MySql数据库

     方法一: 1.安装mysql的odbc驱动 2.代码中添加引用 using System.Data.Odbc; 3.对于数据库表结构: 4.表内容如下: 5.代码如下: 6.运行结果: 7.代码 ...

最新文章

  1. C#异步编程模式IAsyncResult概述
  2. [置顶] 也论百度轻应用--一个开发者的吐槽
  3. Yii2 主从 数据库
  4. Java—servlet简单使用
  5. 华为畅享10s值得买吗_华为畅享10 Plus值不值得买?首批购买用户评价出炉
  6. ThinkPHP6项目基操(17.实战部分 Filesystem文件上传)
  7. 计算机组成原理电子时钟设计与实现,《计算机组成原理》课程设计报告-基于VHDL数字电子钟设计与实现.doc...
  8. sonarqube + nexus 分析项目组成员代码状况,并生成报表
  9. Socket(服务器端)通信连接失败解决方法
  10. CSDN如何删除上传的资源
  11. Keil出现Error:Flash Download failed - Could not load file
  12. MPU9250的详细功能
  13. 项目一(基础)家庭记录收支记账软件
  14. 虚拟化技术——VLAN策略
  15. python 解一元二次方程的根
  16. 乐游TGapi接口平台(接口商)
  17. C#上位机开发串口通信编程——倒计时器开发
  18. 下载中转站downloadTransport
  19. 【圣诞来了】3分钟教你用java画一颗彩色圣诞树,送给别人作为圣诞礼物吧
  20. 烧友必读《音响二十要》转台湾音响大师刘汉盛毕生精华

热门文章

  1. python展开 c函数中的宏预处理_C 语言常用的预处理-宏函数
  2. python清除列表内容_Python 列表的清空方式
  3. (二十六)【2021 WWW】Knowledge-Preserving Incremental Social Event Detection via Heterogeneous GNNs
  4. Spring Cloud实战小贴士:turbine如何聚合设置了context-path的hystrix数据
  5. Java多线程系列(三):Java线程池的使用方式,及核心运行原理
  6. 学术会议 | 中国杭州举办——第21届国际语义网大会​ISWC2022 Call for Papers
  7. 论文浅尝 | 异构图 Transformer
  8. 金融情报挖掘:面向公开文本的期货事件聚合与传导因素分析
  9. BUAA_OO_第二单元作业总结
  10. JSP 简介(转载)