| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 477 人关注过本帖
标题:程序运行后,为什么mysql_real_query函数返回值总是为0值?
只看楼主 收藏
mickey2028
Rank: 1
等 级:新手上路
帖 子:24
专家分:5
注 册:2017-2-13
结帖率:100%
  问题点数:0  回复次数:1   
程序运行后,为什么mysql_real_query函数返回值总是为0值?
头文件
#if !defined(AFX_FRM_LOGIN_H__EA29EF2B_5CDB_41BF_A82A_8C0272E4ADD2__INCLUDED_)
#define AFX_FRM_LOGIN_H__EA29EF2B_5CDB_41BF_A82A_8C0272E4ADD2__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// frm_Login.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// Cfrm_Login dialog

class Cfrm_Login : public CDialog
{
// Construction
public:
    Cfrm_Login(CWnd* pParent = NULL);   // standard constructor
   
    //***************************
    MYSQL *pConn; //数据库连接句柄
    MYSQL_RES *result;
    MYSQL_ROW row;
    //***************************
   
    //定义全局变量
    //***************************
    CString strgbUserName;
    //***************************

// Dialog Data
    //{{AFX_DATA(Cfrm_Login)
    enum { IDD = frm_Login };
    CComboBox    m_strUserName;
    CString        m_strPassWord;
    //}}AFX_DATA


// Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(Cfrm_Login)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    //}}AFX_VIRTUAL

// Implementation
protected:

    // Generated message map functions
    //{{AFX_MSG(Cfrm_Login)
    afx_msg void OncmdConfirm();
    afx_msg void OncmdCancel();
    virtual BOOL OnInitDialog();
    afx_msg void OnDestroy();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_FRM_LOGIN_H__EA29EF2B_5CDB_41BF_A82A_8C0272E4ADD2__INCLUDED_)



程序文件
// frm_Login.cpp : implementation file
//

#include "stdafx.h"
#include "HVAC SMART.h"
#include "frm_Login.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// Cfrm_Login dialog


Cfrm_Login::Cfrm_Login(CWnd* pParent /*=NULL*/)
    : CDialog(Cfrm_Login::IDD, pParent)
{
    //{{AFX_DATA_INIT(Cfrm_Login)
    m_strPassWord = _T("");
    //}}AFX_DATA_INIT
}


void Cfrm_Login::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(Cfrm_Login)
    DDX_Control(pDX, cboUserName, m_strUserName);
    DDX_Text(pDX, txtPassWord, m_strPassWord);
    //}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(Cfrm_Login, CDialog)
    //{{AFX_MSG_MAP(Cfrm_Login)
    ON_BN_CLICKED(cmdConfirm, OncmdConfirm)
    ON_BN_CLICKED(cmdCancel, OncmdCancel)
    ON_WM_DESTROY()
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Cfrm_Login message handlers

void Cfrm_Login::OncmdConfirm()
{
    // TODO: Add your control notification handler code here

    //***********************
    UpdateData(true);//从界面上获取控件数据给相应的变量
   
    if (m_strUserName.GetCurSel()==-1)//如果没有选择将会返回-1
    {
        MessageBox("请先选择用户名!","系统提示",MB_ICONWARNING|MB_OK);

        GetDlgItem(cboUserName)->SetFocus();

        return;
    }
   
    CString strTemp,strUserId,strSQL;
   
    m_strUserName.GetLBText(m_strUserName.GetCurSel(),strTemp);//把cboUserName中指定的内容赋值给strTemp
    strUserId=strTemp.Left(strTemp.Find(' '));//从左边取发现空格为止的字符串
   
    strSQL.Format("select * from uUser where fuserid=\'%s\' and fpassword=\'%s\'",strUserId,m_strPassWord);

    if(mysql_real_query(pConn,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0)//此处不管密码正确与否都只执行下面else的程序代码段,不知为什么??
    {
        MessageBox("用户密码不正确,请重新输入!","系统提示",MB_ICONWARNING|MB_OK);

        GetDlgItem(txtPassWord)->SetFocus();

        return;
    }
    else
    {
        strgbUserName=strTemp.Right(strTemp.Find(' ')-1);//取得cboUserName中的用户名

        //mysql_free_result(result);//释放结果集

        CDialog::OnOK();//关闭对话框
    }
    //***********************
}

void Cfrm_Login::OncmdCancel()
{
    // TODO: Add your control notification handler code here

    //***********************
    CDialog::OnCancel();
    //***********************
}

BOOL Cfrm_Login::OnInitDialog()
{
    CDialog::OnInitDialog();
   
    // TODO: Add extra initialization here

    //初始化数据库
    //************************************
    pConn=mysql_init (NULL);

    if(!mysql_real_connect(pConn,strDBHost,strDBUserName,strDBPassWord,strDBName,intDBPort,NULL,0))//连接数据库
    {
        MessageBox("数据库连接失败!","系统提示",MB_ICONWARNING|MB_OK);
        return FALSE;
    }

    mysql_options(pConn,MYSQL_SET_CHARSET_NAME,"gb2312");//防止乱码
    //************************************

    //为cboUserName控件加载初始数据
    //************************************
    if(mysql_query(pConn,"select * from uUser")!=0)//发出一个以空字符结束的查询串
    {
        MessageBox("查询失败!","系统提示",MB_ICONWARNING|MB_OK);
        return false;
    }
    else
    {
        if(!(result=mysql_store_result(pConn)))//一次性传送结果
        {
            return false;
        }
        else
        {   
            for(int i=0;i<mysql_num_rows(result);i++)//获取行数
            {
                row = mysql_fetch_row(result);//从结果集中获取下一行,取得当前记录行

                char temp[32];
                strcpy(temp,row[0]);
                strcat(temp," ");

                m_strUserName.AddString(strcat(temp,row[1]));//取得当前记录列
            }
        }

        mysql_free_result(result);//释放结果集使用的内存
    }
    //************************************
   
    return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
}

void Cfrm_Login::OnDestroy()
{
    CDialog::OnDestroy();
   
    // TODO: Add your message handler code here
   
    //关闭数据库连接
    //*************************************
    mysql_close(pConn);
    //*************************************
   
}


刚学VC6.0,有很多不懂的地方,请哪位大虾帮我指点一下,谢谢!!
2017-08-09 21:30
mickey2028
Rank: 1
等 级:新手上路
帖 子:24
专家分:5
注 册:2017-2-13
  得分:0 
我仔细查看了mysql_real_query这个函数的相关资料,是我理解有误,问题已经解决了。
2017-08-17 15:07







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054696 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved