C++ Builder ADO数据库连接与保存

// ADO连接
    TADOConnection *con = new TADOConnection(NULL);
    TADOQuery *aq = new TADOQuery(NULL);
    TADOQuery *aq1 = new TADOQuery(NULL);
    try
    {
        if (con->Connected)
            con->Connected = false;

        try
        {
        AnsiString s;
        con->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Password="+
        QuotedStr(s)+";User ID=Admin;Data Source="+strMdbFile+
        ";Mode=Share Deny None;Persist Security Info=True;Jet OLEDB:Database Password=''"+
        ";Jet OLEDB:Engine Type=5;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False";

            //这个可以关闭database login提示对话框
            con->LoginPrompt=false;
        con->Connected = true;
        }
        catch(...)
        {
            ::MessageBox(0, TEXT("打开数据库失败!"),
                    TEXT("警告"), MB_OK | MB_ICONWARNING);
        }

        // 如果连接成功,就通过ADOQuery读取字段
        if (con->Connected)
        {
            AnsiString   SQLtxt;
            if(SSCnow.SSClb==3)
                SQLtxt="select * from p3 order by cgstr";
            else if(SSCnow.SSClb==2)
                SQLtxt="select * from 3D order by cgstr";
            else
                SQLtxt="select * from SSC order by cgstr";


            aq->Connection = con;

            aq->Close();
            aq->SQL->Clear();
            aq->SQL->Text = AnsiString().sprintf(
                    TEXT("%s"),
                    SQLtxt);

            try
            {
               //批量数据集修改
                aq->Open();
                if(aq->RecordCount==0)//说明彩果为空
                {
                   for(int Ri=0;Ri<Memo3->Lines->Count ;Ri++)
                   {

                     if(Memo3->Lines->Strings[Ri].Length()>5 && !Memo3->Lines->Strings[Ri].Pos("=") )
                     {
                       aq->Append() ;//开始修改数据
                       aq->FieldByName("cgstr")->AsString=Memo3->Lines->Strings[Ri];
                       aq->Post();  //next的游标就已经post了
                     }
                   }
                }
                else   //说明原彩果库不为空
                {
                   aq->Last();//最后一个记录
                   for(int Ri=Memo3->Lines->Count-1 ;Ri>=0;Ri--)
                   {
                     if(aq->FieldByName("cgstr")->AsString==Memo3->Lines->Strings[Ri])
                     {
                        //当找到相同期数时
                        for(int J=Ri+1;J<Memo3->Lines->Count;J++)
                        {
                           if(Memo3->Lines->Strings[J].Length()>5 && !Memo3->Lines->Strings[Ri].Pos("="))
                           {
                              aq->Append() ;//开始修改数据
                              aq->FieldByName("cgstr")->AsString=Memo3->Lines->Strings[J];
                              aq->Post();  //next的游标就已经post了
                           }
                        }
                     }
                   }

                }
               CGxs();
               //ShowMessage("完成彩果保存!");

            }

            catch(...)
            {
                //bSucceed = false;
                ::MessageBox(0, TEXT("打开表时发生错误!"),
                        TEXT("警告"), MB_OK | MB_ICONWARNING);
            }
        }
    }


    __finally
    {
        delete aq;
        delete con;
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzksword

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值