以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  C#快餐-17  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=11731)


--  作者:admin
--  发布时间:11/9/2004 2:25:00 AM

--  C#快餐-17


发信人: nice (春天), 信区: DotNET        
标  题: C#快餐-17
发信站: BBS 水木清华站 (Thu Jul 26 02:20:53 2001)


Lesson 17. Reading a database.


ADO API's are part of  the System.Data.ADO namespace. Bellow I show a very  
simple Microsoft Access database called Bank_customer_data. The program needs
to be compiled with option /r:System.dll /r:System.Data.dll.

I store table Bank_customer_data in a database db2.mdb located in the  
directory C\Temp. Firstly we would like to read a name and the amount of  
assets of all customers of the bank. To do that we can use SQL commands  
SELECT Name, Assets FROM Bank_customer_data. To prepare for data retrieval
from the database, we create an instance of ADOCommand class. ADOCommand  
class takes care of passing queries to the database. ADOCommand instance  
can be creates by passing the address of the data source as well as the  
name of the table as string parameters. We will write a slightly longer  
but more transparent code. We also need an instance of ADOConnection  
which represents an open connection to the database. We use ADOConnection  
constructor which takes a string containing the address of the database file.

After an instance of the ADOConnection is created we need to open the
connection to the database using method Open(). If the connection is already  
open an InvalidOperationException  is raised. At the end of the session we  
call Close() to close the connection. If you try to close the connection  
twice it generates  InvalidOperationException. The instance of ADOCommand  
needs to be associated with an instance of opened ADOConnection.  
This is done with the property ActiveConnection. The simplest way to pass  
the query to the database is to with an instance of ADODataReader class.  
The result of the query to the database is contained in the instance of  
the ADODataReader class. To associate the instance of ADODataReader  
with the address of the database and the query to be made, we call Execute
method which takes the instance of the ADODataReader as an out parameter.
The actual reading can be done line by line with the call Read().  
If you decide to display the line you have just read, it is your responsibility to use t
he correct data extraction methods. If, for example you are trying to
extract a string with GetInt32() method an exception will be raised.  
Finally, the reader is closed when no longer used.



using System;
using System.Data.ADO;
public class Test{
    public static void Main()
    {
    string source = "Provider=Microsoft.JET.OLEDB.4.0;" + "data     source="
"C:\\Winnt\\Profiles\\Administrator\\Personal\\db2.mdb
    string command="SELECT Name, Assets FROM Bank_customer_data";
    ADOCommand mCommand = new ADOCommand();
    ADOConnection mConnection=new ADOConnection(source);
    mConnection.Open();
    mCommand.ActiveConnection=mConnection;
    mCommand.CommandText=command;
    ADODataReader mReader;
    mCommand.Execute(out mReader);
    // Use Read to  read data line by line.
    while (mReader.Read())
        { //The data is extracted with the methods GetString and GetInt32
        Console.WriteLine(mReader.GetString(0) + ":" + mReader.GetInt32(1));

        }
    // Close the Reader when done.
    mReader.Close();
    // Close the connection when done.
    mConnection.Close();
    }
}

--

※ 修改:·walts 於 Jul 26 10:39:15 修改本文·[FROM: 166.111.142.118]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.176.234]
上一篇
返回上一页
回到目录
回到页首
下一篇



W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
31.250ms