c++使用ADO和C#使用ADO.net

----------------------C++使用ADO方式读取数据库------------------------------------

    #include <string>  

  #include <iostream>
  #include < time .h>
  #include <windows.h>
  using   namespace   std;  
  #import   "C:\Program Files\Common Files\System\ado\msado15.dll"   no_namespace   rename ( "EOF" , "adoEOF" )  
   
   
  int   main( int   argc,   char *   argv[])  
  {  
        DWORD   start,   end;  //定义程序运行开始时间和结束时间
        start   =   GetTickCount();  //设定开始时间
        _ConnectionPtr   pConn=NULL;  
        _RecordsetPtr   pRss=NULL;  
        _variant_t   i_code;  
        _variant_t   beg_date;  
        _variant_t   end_date;  
        _variant_t   sw_total_stock;  
        _variant_t   sw_publish_stock;  
        string   m_str_i_code;  
        string   m_str_beg_date;  
        string   m_str_end_date;  
        string   m_str_total_stock;  
        string   m_str_publish_stock;  
        _bstr_t   strConn,strSQL;  
        HRESULT   hr;          
   
        ::CoInitialize(NULL);  
        //操作数据库
        try  
        {  
            strConn= "driver={SQL Server};Server=whoami\\mssqlt;DATABASE=kj2006;UID=sa;PWD=sa" ;  
            strSQL= "select   *   from   mytable   "
   
            hr=pConn.CreateInstance(__uuidof(Connection));  
            if (SUCCEEDED(hr))  
            {      
                if (pConn->GetState()==adStateClosed)  
                {  
                    pConn->Open(strConn, "" , "" ,-1);  
                }  
                pRss.CreateInstance(__uuidof(Recordset));  
                if (pRss->GetState()==adStateClosed)  
                    pRss->Open(strSQL,pConn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);  
                //共13893条记录
                cout<< "RecordCount=" <<pRss->RecordCount<<endl;
                //只遍历,不输出
                while (!pRss->adoEOF)  
                {  
                      i_code=pRss->GetCollect( "point" );  
                      beg_date=pRss->GetCollect( "address" );  
                      end_date=pRss->GetCollect( "realdata" );  
                      sw_total_stock=pRss->GetCollect( "flag" );  
                      sw_publish_stock=pRss->GetCollect( "sj" );  
                     
                      m_str_i_code=(string)( char *)(_bstr_t)i_code;  
                      m_str_beg_date=(string)( char *)(_bstr_t)beg_date;  
                      m_str_end_date=(string)( char *)(_bstr_t)end_date;  
                      m_str_total_stock=(string)( char *)(_bstr_t)sw_total_stock;  
                      m_str_publish_stock=(string)( char *)(_bstr_t)sw_publish_stock;  
                     
                      pRss->MoveNext();  
     
                }  
            }             
         
        }  
        catch (_com_error*   e)  
        {  
            cout<<e->ErrorMessage()<<endl;  
            cout<< "数据库连接失败,请检查错误!" ;  
        }  
        try  
        {  
            pRss->Close();  
            pRss=NULL;  
            pConn->Close();  
            pConn=NULL;  
            ::CoUninitialize();  
        }  
        catch (_com_error   &e)  
        {  
            cout<<e.ErrorMessage()<<endl;  
        }    
        //程序结束,计算程序运行花费时间
        end   =   GetTickCount();  
        cout<< "use   time:   " <<end-start<<endl;  
        cin.get();
        return 0;
  }  
 
----------------------C#使用ADO.NET方式操作数据库------------------------------------------------

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //开始时间
            DateTime st = DateTime.Now;

            try
            {
                //数据库链接、数据库命令
                SqlConnection con = new SqlConnection(@"database = kj2006;uid = sa;pwd=sa;server=whoami\mssqlt");
                SqlCommand com = new SqlCommand("select * from run20090910", con);
                con.Open();

                //将结果保存到数据集中
                SqlDataAdapter sda = new SqlDataAdapter();
                sda.SelectCommand = com;
                DataSet ds = new DataSet();
                sda.Fill(ds);
                sda.Dispose();

                string point = string.Empty, address = string.Empty, realdata = string.Empty, flag = string.Empty, sj = string.Empty;

                Console.WriteLine("count=" + ds.Tables[0].Rows.Count);

                //遍历,不打印
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    point = ds.Tables[0].Rows[i]["point"].ToString();
                    address = ds.Tables[0].Rows[i]["address"].ToString();
                    realdata = ds.Tables[0].Rows[i]["realdata"].ToString();
                    flag = ds.Tables[0].Rows[i]["flag"].ToString();
                    sj = ds.Tables[0].Rows[i]["sj"].ToString();
                }

                ds.Dispose();
                con.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("读取出错:" + ex.Message);
                return;
            }
            //结束时间
            DateTime et = DateTime.Now;
            TimeSpan ts = et.Subtract(st);
            Console.WriteLine("timesub="+ts.Seconds + "." + ts.Milliseconds);
            return;
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值