摘要:
文中就用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;
}
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器