动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   .Net → 阅读文章

 在managed C++应用中使用ADO.NET

作者来源: 
阅读 2194 人次 , 2006-4-25 15:02:00 

摘要:

  文中就用ADO.NET数据对象访问数据库及从数据库回取数据的基本原理作出示例说明。

  正文:

  本文提供了一个由应用向导生成的基于标准Managed C++应用的实例,它用.NET的ADODataReader类从数据库中取回一个只读(read-only)、只前移(forward-only)的数据流。就是因为在内存中一次仅一行,可用数据读取器(Data Reader)产生应用执行和化简系统套头(overhead)。在主源文件增加如下代码能获取对具有数据库支持的.NET Framework类的访问:

#using

// Add access to .NET Framework classes.
#using
#using

using namespace System;
using namespace System::Data::ADO;

  为从数据库中取回数据,先用ADOConnection类生成一个对数据库的连接,然后设置ConnectionString属性指定数据源,用ADOConnection类的Open()方法连到数据库。

  之后用ADOCommand类生成一个command对象以获取数据,执行命令返回一个数据读取器(data reader)类的引用,即ADODataReader类的一个实例。

  接着循环调用ADODataReader类的Read()成员一次一行地遍历所有数据行,所取得的数据象一个项目集合(items collection)一样可访问,我们可用索引值或列名来获取各项。注意:在访问ADODataReader对象中的数据前,应先调用Read方法。

int main(void)
{
ADOConnection* connection; // ADO connection.
ADOCommand* command; // ADO command
ADODataReader* dataReader; // ADO data reader

try
{
// Create connection, set connection string and open connection to
// specified database.
connection = new ADOConnection();
connection->ConnectionString = S"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\\Data\\grocertogo.mdb;Persist Security Info=False";

connection->Open();

// Create command and get data reader by executing this command.
command = new ADOCommand(S"SELECT ProductName, UnitPrice FROM Products", connection);
command->Execute(&dataReader);

// Print table header
Console::WriteLine(S"_____________________________________");
Console::WriteLine(S"Product | Price");
Console::WriteLine(S"_____________________________________");

// Iterate through rows set and print data.
while(dataReader->Read())
Console::WriteLine(S"{0, -30}| {1}", dataReader->get_Item("ProductName"), dataReader->get_Item("UnitPrice"));

// Print table footer.
Console::WriteLine(S"_____________________________________");


// Close DataReader
dataReader->Close();
// Close connection.
connection->Close();
}
catch(Exception* e)
{
// Print error message and close connection.
Console::WriteLine("Error occured: {0}", e->Message);
if (dataReader && !dataReader->IsClosed)
dataReader->Close();
if (connection->State == DBObjectState::Open)
connection->Close();
}

Console::WriteLine("Press ENTER to continue");
Console::ReadLine();

return 0;
}
  
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:VC++.NET的GDI+入门之位图和图标
· 下一篇:基于VC.NET的GDI+编程入门之画刷
· 用C#编写发手机中文短信息Windows服务
· 为ADO程序设计的ADO.NET(一)
· ASP.NET之精通弹出窗口
· 浅议Visual Basic.NET中HOOK的应用
· 一个简单的ASP.NET Forms 身份认证


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077