荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: achang (阿昌), 信区: Program
标  题: 一个ado连数据库的经典源码
发信站: 荔园晨风BBS站 (2005年10月06日21:10:54 星期四), 站内信件

我要是早找到就不用走这么多弯路了...好文共享..


/*******************************************************************

*利用ADO访问MS SQL2000

*要求:

*【1】输出stu_info表内的每一条记录

*【2】添加一条新记录

*【3】删除名字为"本拉登"的记录

*/



#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace
rename("EOF","adoEOF")

#include <iostream>

#include <iomanip> //for setw()



using namespace std;
class STU
{
public:
     char snum[10]; //学号
     char sname[10]; //姓名
     char ssex[2]; //姓别
     long sage; //年龄
     char smajor[20]; //专业

public:
     STU(){}
     ~STU(){}
};

int main()
{
    STU student;
    ::CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备
     _RecordsetPtr m_pRecordset("ADODB.Recordset");
     _ConnectionPtr m_pConnection("ADODB.Connection");
    _bstr_t bstrSQL("select * from stu_info"); //查询语句
    char * query_cmd = "DELETE FROM stu_info WHERE sname = '本拉登'";
    try
    {
        // 创建Connection对象
        m_pConnection.CreateInstance("ADODB.Connection");
        // 设置连接字符串,必须是BSTR型或者_bstr_t类型
        _bstr_t strConnect=
"Provider=SQLOLEDB;Server=(local);Database=student; uid=sa; pwd=1234;";
        //若数据库在网络上则Server为形如(192.168.1.5,3340)
        //用户sa和密码123只是针对我的库
        m_pConnection->Open(strConnect,"","",adModeUnknown);
        if(m_pConnection==NULL)
            cerr<<"Lind data ERROR!\n";
        // 创建记录集对象
        m_pRecordset.CreateInstance(__uuidof(Recordset));
        // 取得表中的记录
        m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
        _variant_t vsnum,vsname,vsage,vssex,vsmajor; //对应库中的snum,sname,sag
e,ssex,smajor
        cout << "学号 姓名    年龄 姓别 专业";
        cout <<
"\n----------------------------------------------------------------\n";
        while (!m_pRecordset->EndOfFile)
        {
            vsnum = m_pRecordset->GetCollect(_variant_t((long)0));//这儿给字段
编号和字段名都可以
            vsname = m_pRecordset->GetCollect("sname");
            vsage = m_pRecordset->GetCollect("sage");
            vssex = m_pRecordset->GetCollect("ssex");
            vsmajor = m_pRecordset->GetCollect("smajor");
            if (vsnum.vt != VT_NULL && vsname.vt != VT_NULL && vsage.vt !=
VT_NULL && vssex.vt != VT_NULL && vsmajor.vt != VT_NULL)
            {
                cout.setf(ios::left);
                cout << setw(14) << (char*)(_bstr_t)vsnum;
                cout << setw(14) << (char*)(_bstr_t)vsname;
                cout << setw(8) << vsage.lVal;
                cout << setw(8) << (char*)(_bstr_t)vssex;
                cout <<setw(20) << (char*)(_bstr_t)vsmajor;
                cout.unsetf(ios::left);
                cout << endl;
            }
            m_pRecordset->MoveNext(); ///移到下一条记录
        }
        cout <<
"\n----------------------------------------------------------------\n";
        cout << "\n请输入你要添加的学生信息\n";
        cout << "学号:";
        cin >> student.snum;
        cout << "\n姓名:";
        cin >> student.sname;
        cout << "\n年龄:";
        cin >> student.sage;
        cout << "\n姓别:";
        cin >> student.ssex;
        cout << "\n专业:";
        cin >> student.smajor;
        m_pRecordset->MoveFirst(); //移动到第一条记录
        m_pRecordset->AddNew(); ///添加新记录
        m_pRecordset->PutCollect("snum",_variant_t(student.snum));
        m_pRecordset->PutCollect("sname",_variant_t(student.sname));
        m_pRecordset->PutCollect("sage",_variant_t(student.sage));
        m_pRecordset->PutCollect("ssex",_variant_t(student.ssex));
        m_pRecordset->PutCollect("smajor",_variant_t(student.smajor));
        m_pRecordset->Update();
        m_pConnection->Execute(query_cmd,NULL,1); //用Execute执行sql语句来删除

        m_pRecordset->Close(); // 关闭记录集
    }
    catch(_com_error e)
    {
        // 显示错误信息
        cerr << "\nERROR:" << (char*)e.Description();//抛出异常
    }
    if(m_pConnection->State)
        m_pConnection->Close();

    ::CoUninitialize();
     return 0;
}

--
轻风亲吻我像蛋蛋蛋
水面小蜻蜓跳弹吓弹吓洗吓头
点点春雨降像葡葡葡萄子
万物在生长 风在期待出发
万物在跳扎扎 风在期待出发
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.110.128]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店