----------------------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;
}
}
}