-- 作者: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] 上一篇 返回上一页 回到目录 回到页首 下一篇
|