|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制。ado|数据|数据库 以下是本CSDN社区的Michael_Jackson(麦克尔★杰克逊)的贴子(删除C#局部),放这里我想对人人更有效!
可使用 ADO.NET DataReader 从数据库中检索只读、只进的数据流。由于每次在内存中一直只要一行,所以利用 DataReader 可进步使用法式的功能并削减体系开支。
当创立 Command 对象的实例后,可挪用 Command.ExecuteReader 从数据源中检索行,从而创立一个 DataReader,如以下示例所示。
[Visual Basic]
Dim myReader As SqlDataReader = myCommand.ExecuteReader()
利用 DataReader 对象的 Read 办法可从查询了局中获得行。经由过程向 DataReader 传递列的称号或序号援用,可以会见前往行的每列。不外,为了完成最好功能,DataReader 供应了一系列办法,它们将使您可以会见其本机数据类型(GetDateTime、GetDouble、GetGuid、GetInt32 等)模式的列值。有关类型化会见器办法的列表,请参阅 OleDbDataReader 类和 SqlDataReader 类。假如在基本数据类型未知时利用类型化会见器办法,将削减在检索列值时所需的类型转换量。
以下代码示例轮回会见一个 DataReader 对象,并从每一个行中前往两个列。
[Visual Basic]
Do While myReader.Read()
Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", myReader.GetInt32(0), myReader.GetString(1))
Loop
myReader.Close()
DataReader 供应未缓冲的数据流,该数据流使进程逻辑可以无效地按按次处置从数据源中前往的了局。因为数据不在内存中缓存,所以在检索大批数据时,DataReader 是一种合适的选择。
封闭 DataReader
每次利用完 DataReader 对象后都应挪用 Close 办法。
假如 Command 包括输入参数或前往值,那末在 DataReader 封闭之前,将没法会见这些输入参数或前往值。
请注重,当 DataReader 翻开时,该 DataReader 将以独有体例利用 Connection。在初始 DataReader 封闭之前,将没法对 Connection 履行任何号令(包含创立另外一个 DataReader)。
多个了局集
假如前往的是多个了局集,DataReader 会供应 NextResult 办法来按按次轮回会见这些了局集,如以下代码示例所示。
[Visual Basic]
Dim myCMD As SqlCommand = New SqlCommand("SELECT CategoryID, CategoryName FROM Categories;" & _
"SELECT EmployeeID, LastName FROM Employees", nwindConn)
nwindConn.Open()
Dim myReader As SqlDataReader = myCMD.ExecuteReader()
Dim fNextResult As Boolean = True
Do Until Not fNextResult
Console.WriteLine(vbTab & myReader.GetName(0) & vbTab & myReader.GetName(1))
Do While myReader.Read()
Console.WriteLine(vbTab & myReader.GetInt32(0) & vbTab & myReader.GetString(1))
Loop
fNextResult = myReader.NextResult()
Loop
myReader.Close()
nwindConn.Close()
从 DataReader 中获得架构信息
当 DataReader 翻开时,可使用 GetSchemaTable 办法检索有关以后了局集的架构信息。GetSchemaTable 将前往一个填充了行和列的 DataTable 对象,这些行和列包括以后了局集的架构信息。关于了局集的每列,DataTable 都将包括一行。架构表行的每列都映照到在了局集中前往的列的属性,个中 ColumnName 是属性的称号,而列的值为属性的值。以下代码示例为 DataReader 写出架构信息。
[Visual Basic]
Dim schemaTable As DataTable = myReader.GetSchemaTable()
Dim myRow As DataRow
Dim myCol As DataColumn
For Each myRow In schemaTable.Rows
For Each myCol In schemaTable.Columns
Console.WriteLine(myCol.ColumnName & " = " & myRow(myCol).ToString())
Next
Console.WriteLine()
Next
OLE DB 章节
分层行集或章节(OLE DB 类型 DBTYPE_HCHAPTER、ADO 类型 adChapter)可使用 OleDbDataReader 来检索。当以 DataReader 的模式前往包括某章节的查询时,该章节将以此 DataReader 中列的模式前往,并公然为 DataReader 对象。
ADO.NET DataSet 也可用于经由过程表间的父子关系来暗示分层行集。有关的更多信息,请参阅创立和利用 DataSet。
以下代码示例利用 MSDataShape 供应法式来为客户列表中的每一个客户生成定单的章节列。
[Visual Basic]
Dim nwindConn As OleDbConnection = New OleDbConnection("Provider=MSDataShape;Data Provider=SQLOLEDB;" & _
"Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind")
Dim custCMD As OleDbCommand = New OleDbCommand("SHAPE {SELECT CustomerID, CompanyName FROM Customers} " & _
" APPEND ({SELECT CustomerID, OrderID FROM Orders} AS CustomerOrders " & _
" RELATE CustomerID TO CustomerID)", nwindConn)
nwindConn.Open()
Dim custReader As OleDbDataReader = custCMD.ExecuteReader()
Dim orderReader As OleDbDataReader
Do While custReader.Read()
Console.WriteLine("Orders for " & custReader.GetString(1)) ' custReader.GetString(1) = CompanyName
orderReader = custReader.GetValue(2) ' custReader.GetValue(2) = Orders chapter as DataReader
Do While orderReader.Read()
Console.WriteLine(vbTab & orderReader.GetInt32(1)) ' orderReader.GetInt32(1) = OrderID
Loop
orderReader.Close()
Loop
custReader.Close()
nwindConn.Close()
</p> asp可以使用微软的activeX 使得网页功能无比强大,不过安全性也较差,而且是基于的windows服务器,所以性能稳定性也一般 |
|