我对MFC用

0.     连接数据库的代码

CString strConnect;

     strConnect.Format("Provider=SQLOLEDB.1;Persist Security Info=TRUE;UID=sa;PWD=jiaojinge;Initial Catalog=Mydbse");//PWD是在数据库安全性里面设置的,Catalog是数据库名

     if (FAILED(m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown)))

     {

            AfxMessageBox("Can not open Database!");

            m_pConnection.Release();

     }

1.首先要定义几个接口的变量,记得在用之前要用CreateInstance(“ADODB.Command”)

或者这样写CreateInstance(__uuidof(Connection));  具体代码如下:

::CoInitialize(NULL);   //初始化com

     try

     {

            if (FAILED(m_pConnection.CreateInstance(__uuidof(Connection))))

            {

                   AfxMessageBox("Create Instance failed!");

                   return;

            }

           

     //     AfxMessageBox("连接成功");

           

     }

     catch(_com_error e)

     {

            AfxMessageBox(e.Description());

     }

2.记得导入ADO,在stdafx.h文件的最后面(谨记)导入,不是其他地方;也可以在

CxxApp中导入

 

3.打开记录集

CString sql;

    sql.Format("select * from Stu_grade");

    _bstr_t Varsql=sql.AllocSysString();

try

    {

        m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),/

                  adOpenDynamic,adLockOptimistic,adCmdText);

   

 

    }

    catch(_com_error e)

    {

           AfxMessageBox(e.Description());

    }

4.在数据库中添加和修改记录以及获取记录用到的函数

 

1. 添加记录函数PutCollect()

   m_ado.m_pRecordset->PutCollect("Chinese",_variant_t(strchinese));//第一个变量时字段名,第二个是添加的值,注意类型,类型转换后面会讲到。(这里strchinese已经是CString类型)

m_ado.m_pRecordset->PutCollect("Id",_variant_t((long)m_id));//对于int类型记得要先转换成long

 2.获取记录GetItem()和GetCollect()

 获取字段值:

varname=m_ado.m_pRecordset->GetCollect("Name");//其中varname_variant_t类型

Varname=m_ado.m_pRecordset->Fields->GetItem("Password")->Value

 

 修改字段值:

法一:m_ado.m_pRecordset->Fields->GetItem("Password")->Value=(_bstr_t)m_secrate;

法二:m_ado.m_pRecordset->Fields->GetItem((long)8)->PutValue((_bstr_t)straverage);//GetItem中的参数是列号。

 

5.数据类型的转换

1._variant_t转换成CString类型:

CString strpassword=(char*)_bstr_t(varpassword);

2.CString类型转化成_bstr_t

CString str;

      str.Format("delete from Stu_base_info where Id='%d'",m_id);

      _bstr_t varstr=str.AllocSysString();

   也可以通过直接赋值的方式转化

详细转化见下表:

                       将其他数据类型转化成字符串类型

源类型

函数

示例

短整形

Itoa(int,char*,int)

itoa(i,temp,10);//i转化为字符串放入temp中,十进制表示

长整形

ltoa(long,char*,int)

和上面差不多

浮点型

fcvt(double,int,int*,int*)

具体见MSDN,不知道怎么回事,用这种方法转化,后面的值老是会覆盖之前转化的值,转一个数据不会出错,多了就不行

BSTR变量

ConvertBSTRToStringBSTR pSrc

BSTR bstrValue=::SysAllocString(L(“程序员”);

Char *buf=_com_util::ConvertBSTRToString(bstrValue);

SysFreeString(bstrValue);

AfxMessageBox(buf);

Delete(buf);

_bstr_t变量

可直接赋值

直接赋值

 

 

 

 

 

字符串转化成其他类型

目标类型

函数

示例

Int

atoi(const char*)

i=atoi(temp)

long

atol(const char*)

L=atol(temp)

Float

atof(const char*)

d=atof(temp);

BSTR变量

SysAllocString(const OLECHAR*);

SysFreeString(BSTR);

BSTR bstrValue=::SysAllocString(L”程序”);

//完成对bstrValue的使用

SysFreeString(bstrValue);

_bstr_t

直接赋值

直接赋值

 

其他类型转换成CString类型

CString str;

Str.Format(“%d”,i);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值