日期:2009-05-13  浏览次数:20489 次

 ADO.NET数据库编程比较复杂,名目繁多的类、对象、属性、方法让每一个编程者都感觉恼火。本文旨在介绍ASP.NET Beta2数据库编程的主要内容,帮助编程者最快的了解ADO.NET数据库编程的精髓。


  一、 Managed Providers

  如果你是初学者,可能你会问,什么是"Managed Providers"?

  Managed Providers提供简单的方法连接和访问数据库,有点类似于数据库连接,当然又比它强的多。Managed Providers提供OleDb和SQL Server两种编程接口。因为SQL Server是微软自己的产品,因此,专门提供了一个针对SQL Server的接口,使用这个接口访问SQL Server的效率应该比使用OleDb强。

  NameSpaces

  本文所有的例子程序都需要使用以下NameSpaces:

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Oledb" %>

  Connection

  为了连接数据库,必须使用OleDbConnection:

Dim objConn as New OleDBConnection
("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=e:\sff\site\db\users.mdb")

  当然,你也可以将具体的连接方法作为变量使用,在连接数据库以后,必须打开数据库:

objConn.Open()

  这样,就可以使用数据库了,一般在最后,我们都要求关闭数据库连接:

objConn.Close()
objConn=Nothing

  Command

  连接数据库以后,就可以发送命令对数据库进行操作了,OleDbCommand允许发送命令对数据库进行操作。根据发送的SQL语句,我们可以对数据库进行几乎所有操作。

Dim objCmd as New OleDbCommand("SELECT * From users", objConn)

  以上语句建立Command,根据习惯不同,也可以使用以下方法:

Dim objCmd as New OleDbCommand()
objCmd.Connection = objConn
objCmd.CommandText = "SELECT * FROM users"

  还可以这样:

Dim objCmd as New OleDbCommand(SQL String, connection string)

  仔细观察上面的语句,我们发现在定义OleDbCommand时,可以同时使用数据库连接OleDbConnection和数据库连接语句。以上代码并没有执行SQL语句,现在我们来看到底怎样执行:


  ExecuteNonQuery

  当执行没有返回数据的操作的时候,我们可以使用以上方法,比如插入数据、更新数据等操作,具体这样执行:

objCmd.ExecuteNoQuery

  ExecuteReader

  在需要一个Data Reader的时候,我们可以使用以上方法,具体这样执行:

Dim objRd as OleDbDataReader
objRd = objCmd.ExeuteReader

  ExecuteScalar

  使用ExecuteScalar方法来取得一个单个地返回数据,比如对数据的统计。

  Data Reader

  OleDbReader是专门用来读取数据的对象,这个对象除了读数据以外,不能做其他任何数据库操作。尽管比较简单,但是在用来浏览数据的时候效率是非常高的。

Dim objReader as OleDbDataReader
objReader = objCmd.ExecuteReader
While objReader.Read
Response.Write(objReader.GetString(0) & "<br>")
End While

  以上语句读取Command的返回结果的第一个字段,这个字段是字符型数据。我们可以使用其他方法取得各种类型的数据:

    GetBoolean(x)

    GetByte(x)

    GetBytes(x)

    GetChar(x)

    GetChars(x)

    GetDataTypeName(x) -取得数据类型

    GetDateTime(x)

    GetDecimal(x)

    GetDefaultStream(x)

    GetDouble(x)

    GetFieldType(x)

    GetFloat(x)

    GetGuid(x)

    GetInt16(x)

    GetInt32(x)

    GetInt64(x)

    GetName(x) - 取得字段名

    GetOrdinal(name) -根据字段名取得字段序号

    GetString(x)

    GetTime