网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

vc++sql

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:网学会员,鉴于大家对vc++sql十分关注,会员在此为大家搜集整理了“vc++sql”一文,供大家参考学习!


    请问,如何在VC++中将VC对话框程序与SQLServer2000数据库相连,也就是说,每当我在对话框中输入相应的纪录,然后点击对话框中的保存按钮,系统自动把我的纪录保存到制定的SQLServer2000数据库中!!
    
    
    
    
    对我有用[0]丢个板砖[0]引用举报管理TOP回复次数:12
    ohfox
    (ohfox)
    等级:
    #1楼得分:0回复于:2005-08-0811:02:25用Recordset类和数据库联接阿
    
    
    对我有用[0]丢个板砖[0]引用举报管理TOP
    VCSQLVB
    (深谷清音(谁知还是难脱俗尘))
    等级:
    #2楼得分:0回复于:2005-08-0811:05:11m_cn->Open((_bstr_t)("Provider=SQLOLEDB;DataSource="+dserver+";InitialCatalog="+dbase+";uid="+uid+";pwd="+pwd+";"),"","",NULL);
    
    
    对我有用[0]丢个板砖[0]引用举报管理TOP
    humourHM
    (小鬼)
    等级:
    #3楼得分:30回复于:2005-08-0811:17:51使用ADO访问数据库
    VC可使用的数据库编程接口包括:ODBCAPI、MFCODBC、ADO、DAO、RDO和DB-Library等。这些技术各有自己的优缺点,它们都提供了简单、灵活、访问速度快、可扩展性好的开发技术。传统的ODBC技术只能访问关系数据库,并且访问数据库的速度慢。而OLEDB访问技术,不仅可以访问关系型数据库,还可以访问非关系型数据库,同时由于OLEDB是基于COM接口的技术,使用这种技术可以直接对数据库的驱动程序进行访问,从而大大提供了访问速度。
    ADO(ActiveXDataObject的简称)是Microsoft为最新和最强大的数据访问范例OLEDB而设计的,是一个便于使用的应用程序层接口。ADO通过OLEDB提供访问和操作数据库服务器中的数据。ADO最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。
    这里提供了使用ADO访问数据库的简单代码,供初学者参考。代码中涉及到了SQL语法,但不属于ADO所讨论的范围,相关内容见《SQL语法基础》。以下代码更改过一次,使得内容更完善,只需稍加修改可成为一个类。
    ·使用ADO访问数据库的简单实例:
    //使用ADO前必须在工程的stdafx.h文件最后直接使用#import引入ADO库文件:
    #import"c:\programfiles\commonfiles\system\ado\msado15.dll"
    no_namespacerename("EOF","adoEOF")
    //以上路径应视实际情况而定;为了避免常数冲突,将常数EOF改名为adoEOF。
    //在CWinApp::InitInstance()的重载函数中初始化OLE库:
    if(!AfxOleInit())
    {
    //初始化OLE库失败
    }
    /*********************************************************************************************
    ADO库包含三个智能指针:_ConnectionPtr、_CommandPtr和_RecordsetPtr。
    _ConnectionPtr通常
    被用来创建一个数据连接或执行一条不返回任何结果的SQL语句。
    _CommandPtr返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。
    _RecordsetPtr是一个记录集对象。它对记录集提供了更多的控制功能,如记录锁定、游标控制等。
    *********************************************************************************************/
    //定义变量:
    public:
    _ConnectionPtrm_pConnection;
    _RecordsetPtrm_pRecordset;
    //初始化:
    //创建Connection对象
    HRESULThr;
    hr=m_pConnection.CreateInstance("ADODB.Connection");
    if(!SUCCEEDED(hr))
    {
    //创建Connection对象失败
    }
    //创建Recordset对象
    hr=m_pRecordset.CreateInstance("ADODB.Recordset");
    if(!SUCCEEDED(hr))
    {
    //创建Recordset对象失败
    }
    //m_pConnection.CreateInstance(__uuidof(Connection));
    //m_pRecordset.CreateInstance(__uuidof(Recordset));
    //打开Access2000数据库
    BOOLOpen(CStringDBName)
    {
    CStringstrData;
    strData="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+DBName;
    //对于ACCESS2000,Provider=Microsoft.Jet.OLEDB.4.0;
    //对于ACCESS97,Provider=Microsoft.Jet.OLEDB.3.51;
    try
    {
    m_pConnection->Open(_bstr_t(strData),"","",adModeUnknown);
    /******************************************************************************
    函数:HRESULTConnection15::Open(_bstr_tConnectionString,_bstr_tUserID,
    _bstr_tPassword,longOptions)
    ConnectionString:连接字串;
    UserID:用户名;
    Password:登陆密码;
    Options:连接选项,用于指定Connection对象对数据的更新许可权:
    adModeUnknown:缺省。当前的许可权未设置
    adModeRead:只读
    adModeWrite:只写
    adModeReadWrite:可以读写
    adModeShareDenyRead:阻止其它Connection对象以读权限打开连接
    adModeShareDenyWrite:阻止其它Connection对象以写权限打开连接
    adModeShareExclusive:阻止其它Connection对象打开连接
    adModeShareDenyNone:允许其它程序或对象以任何权限建立连接
    ******************************************************************************/
    }
    catch(_com_errore)
    {
    AfxMessageBox(e.ErrorMessage());
    returnFALSE;
    }
    returnTRUE;
    }
    //查询
    BOOLLocating(CStringSqlCommand)
    {
    //参数形式:
    //SELECT*FROMTableName[WHEREField1=Value1][ANDField2>Value2][...]
    if(!m_pConnection->State)
    {
    returnFALSE;
    }
    if(m_pRecordset->State)
    {
    m_pRecordset->Close();
    }
    try
    {
    m_pRecordset->Open((_bstr_t)SqlCommand,m_pConnection.GetInterfacePtr(),
    adOpenDyna
    mic,adLockOptimistic,adCmdText);
    }
    catch(_com_error*e)
    {
    AfxMessageBox(e->ErrorMessage());
    returnFALSE;
    }
    returnTRUE;
    }
    //统计纪录数
    longGetCount(CStringSqlCommand)
    {
    //参数形式:
    //SELECTCOUNT(*)FROMTableName[WHEREField1=Value1][ANDField2=Value2][...]
    _variant_tvNULL;
    _RecordsetPtrpRecordset;
    pRecordset=m_pConnection->Execute((_bstr_t)SqlCommand,&;vNULL,adCmdText);
    _variant_tvCount=pRecordset->GetCollect((_variant_t)(long)0);
    pRecordset->Close();
    pRecordset.Release();
    returnvCount.lVal;
    }
    //从数据库读取数据
    BOOLReadData()
    {
    _variant_tvar;
    try
    {
    if(!m_pRecordset->BOF)
    m_pRecordset->MoveFirst();
    else
    //数据库为空纪录
    returnFALSE;
    while(!m_pRecordset->adoEOF)
    {
    //获取指定字段的值,以字段名为Name为例:
    var=m_pRecordset->GetCollect("Name");
    if(var.vt!=VT_NULL)
    //(LPCSTR)_bstr_t(var)就是该字段的值
    m_pRecordset->MoveNext();
    }
    }
    catch(_com_error*e)
    {
    AfxMessageBox(e->ErrorMessage());
    returnFALSE;
    }
    returnTRUE;
    }
    
    
    对我有用[0]丢个板砖[0]引用举报管理TOP
    humourHM
    (小鬼)
    等级:
    #4楼得分:20回复于:2005-08-0811:18:39//修改纪录有以下两种方式:
    voidModify()
    {
    //先移动到指定位置
    //以将字段Name改为“帝王”为例:
    m_pRecordset->PutCollect("Name",_variant_t("帝王"));
    //……
    m_pRecordset->Update();
    }
    BOOLModify(CStringSqlCommand)
    {
    //参数形式:
    //UPDATETableNameSET[Field1=Value1][,Field2=Value2][...]
    //[WHEREField1=Value1][ANDField2=Value2][...]
    _variant_tvNULL;
    if(!m_pConnection->State)
    {
    //数据库未打开
    returnFALSE;
    }
    m_pConnection->Execute((_bstr_t)SqlCommand,&;vNULL,adCmdText);
    returnTRUE;
    }
    //添加纪录也有以下两种方式:
    BOOLAdd()
    {
    m_pRecordset->MoveLast();
    m_pRecordset->AddNew();
    try
    {
    //以添加Name为“帝王”的纪录为例:
    m_pRecordset->PutCollect("Name",_variant_t("帝王"));
    //……
    m_pRecordset->Update();
    }
    catch(_com_error*e)
    {
    AfxMessageBox(e->ErrorMessage());
    returnFALSE;
    }
    returnTRUE;
    }
    BOOLAdd(CStringSqlCommand)
    {
    //参数形式:
    //INSERTINTOTableName(Field1,Field2,...)VALUES(Value1,Value2,...)
    _variant_tvNULL;
    if(!m_pConnection->State)
    {
    //数据库未打开
    returnFALSE;
    }
    m_pConnection->Execute((_bstr_t)SqlCommand,&;vNULL,adCmdText);
    returnTRUE;
    }
    //删除纪录也有以下两种方式:
    BOOLDelete
    (longlIndex)
    {
    //删除第lIndex条纪录
    try
    {
    m_pRecordset->MoveFirst();
    m_pRecordset->Move(lIndex);
    m_pRecordset->Delete(adAffectCurrent);
    m_pRecordset->Update();
    }
    catch(_com_error*e)
    {
    AfxMessageBox(e->ErrorMessage());
    returnFALSE;
    }
    returnTRUE;
    }
    BOOLDelete(CStringSqlCommand)
    {
    //参数形式:
    //DELETEFROMTableNameWHEREField1=Value1[ANDField2=Value2][...]
    _variant_tvNULL;
    if(!m_pConnection->State)
    {
    //数据库未打开
    returnFALSE;
    }
    m_pConnection->Execute((_bstr_t)SqlCommand,&;vNULL,adCmdText);
    returnTRUE;
    }
    //添加表
    BOOLAddTable(CStringSqlCommand)
    {
    //参数形式:
    //CREATETABLETableName(Field1[Type1],[Field2[Type2]][...])
    _variant_tvNULL;
    if(!m_pConnection->State)
    {
    //数据库未打开
    returnFALSE;
    }
    m_pConnection->Execute((_bstr_t)SqlCommand,&;vNULL,adCmdText);
    returnTRUE;
    }
    //删除表
    BOOLDeleteTable(CStringSqlCommand)
    {
    //参数形式:
    //DROPTABLETablename
    _variant_tvNULL;
    if(!m_pConnection->State)
    {
    //数据库未打开
    returnFALSE;
    }
    m_pConnection->Execute((_bstr_t)SqlCommand,&;vNULL,adCmdText);
    returnTRUE;
    }
    //添加字段
    BOOLAddField(CStringSqlCommand)
    {
    //参数形式:
    //ALTERTABLETableNameADDField[Type]
    _variant_tvNULL;
    if(!m_pConnection->State)
    {
    //数据库未打开
    returnFALSE;
    }
    m_pConnection->Execute((_bstr_t)SqlCommand,&;vNULL,adCmdText);
    returnTRUE;
    }
    //删除字段
    BOOLDeleteField(CStringSqlCommand)
    {
    //参数形式:
    //ALTERTABLETableNameDROPField
    _variant_tvNULL;
    if(!m_pConnection->State)
    {
    //数据库未打开
    returnFALSE;
    }
    m_pConnection->Execute((_bstr_t)SqlCommand,&;vNULL,adCmdText);
    returnTRUE;
    }
    //关闭记录集
    voidCloseRecord()
    {
    if(m_pRecordset->State)
    {
    m_pRecordset->Close();
    m_pRecordset.Release();
    }
    }
    //关闭数据库
    voidClose()
    {
    if(m_pConnection->State)
    {
    m_pConnection->Close();
    m_pConnection.Release();
    }
    }
    
    
  • 上一篇资讯: Vfp+SQL操作
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师