· Команди OleDbCommand и SqlCommand
Когато извикате метод Open, отваряте
връзката (connection) към базата
данни. Сега се нуждаете да създадете команда да стартира отново базата данни. Това става чрез обект OleDbCommand (или SqlCommand обект ако използвате връзка SqlConnection).
Dim cmdSqlCommand As
SqlCommand = New _
SqlCommand("SELECT StateCode, StateName, FirstZipCode FROM
States", sqlConn)
За OleDbCommand добавете следния код към процедурата вдясно след
команда myConn.Open:
Dim sqlStatement As String
= "SELECT * FROM States"
Dim myComm As OleDbCommand=
New OleDbCommand (sqlStatement, myConn)
За втория ред, бихте могли да използвате
този алтернативен синтаксис:
Dim myComm As New
OleDbCommand ()
myComm.CommandText =
sqlStatement
myComm.ActiveConnection =
myComm
Като създавате обект Command задавате sqlStatement конструкцията, която да бъде изпълнена на
източника на данни като първи параметър и обекта за конекция myConn като втори. Виждате мощта на конструктора. Вие
стабилизирахте връзката към базата данни, и
създадохте команда за получаване на записите. Както в ADO, вие не можете да съхраните тези записи във връзка (connection) или в команда (command). Наместо това трябва да имате обект, който да държи
тези записи.
· Четец на данни - DataReader
ADO.NET поддържа няколко начина за достъп да записи, които са
резултат на сечение. Единият е множеството от
данни DataSet , което вече изпробвахте. Но, ако данните са много, а не искате да се заема толкова
памет? ADO.NET обезпечава друг обект, наречен DataReader. Обектът DataReader е точно това: четец на данни.
Той чете по един запис данни наведнаж, само напред (forward-only), поток само за четене (read-only stream).
Това
ви позволява да изпробвате един запис и след това да се преместите на
следващия. По едно и също време само един запис е в паметта, така че
силно намалява използваната памет.
Dim drSqlDataReader As
SqlDataReader = _
cmdSqlCommand.ExecuteReader()
Console.WriteLine("---------")
Do While drSqlDataReader.Read()
Console.WriteLine(vbTab & "{0}" & vbTab &
"{1}", _
drSqlDataReader.Item(0).ToString(), _
drSqlDataReader.GetString(1))
Loop
drSqlDataReader.Close()
sqlConn.Close()
За OleDbDataReader следният код определя DataReader и след това въвежда цикъл, който ни предоставя всеки
запис. Кодът всъщност прекъсва (exits)
цикъла след първия път, така че няма да гледате 52 съобщения (message boxes).
Dim myReader As OleDbDataReader
= Nothing
myReader = myComm.ExecuteReader()
While myReader.Read
MsgBox(myReader.GetString(1))
Exit While
End While
Методът GetString връща низова
стойност за индексирано поле. Понеже стартираме от 0, полето с индекс 1 е StateName. Трябва да използвате коректния
Get метод, от GetString, GetBoolean, и GetDateTime. Съществува също и GetDataTypeName за да изследвате типа данни на конкретно поле. Ако решите да стартирате примера, не забравяйте да
прегледате резултатите от проекта.
Резултати от програмата в прозореца Output(Debug), който представлява конзолата в режим на дизайн:
| AK Alaska AL Alabama AR Arkansas AZ Arizona CA California CO Colorado CT Connecticut DC District of Columbia DE Delaware FL Florida GA Georgia HI Hawaii IA Iowa ID Idaho IL Illinois IN Indiana KS Kansas | KY Kentucky LA Lousiana MD Maryland ME Maine MI Michigan MN Minnesota MO Missouri MS Mississippi MT Montana NC North Carolina ND North Dakota NE Nebraska NH New Hampshire NJ New Jersey NM New Mexico NV Nevada NY New York OH Ohio | OK Oklahoma OR Oregon MA Massachusetts PA Pennsylvania RI Rhode Island SC South Carolina SD South Dakota TN Tennessee TX Texas UT Utah VA Virginia VI Virgin Islands VT Vermont WA Washington WI Wisconsin WV West Virginia WY Wyoming |