数据访问示例都需要使用pubs数据据库.添加数据源,找到pubs.mdf,并加入本地项目。
1.选择数据
Private Sub MySearch()
Dim data As List(Of String)
data = GetAuthorsLastNames
For Each author As String In data
Console.WriteLine(author)
Next
Console.WriteLine("Press Enter to exit")
Console.Read()
End Sub
Public Function GetAuthorsLastNames()
Dim conn As SqlConnection
Dim cmd As SqlCommand
Dim result As New List(Of String)
Dim cmdString As String = "Select au_lname from authors"
'获取数据库所在的文件夹
Dim strPUBSMDF As String = Mid(My.Application.Info.DirectoryPath, 1, My.Application.Info.DirectoryPath.Length - 9)
conn = New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=" & strPUBSMDF & "pubs.mdf" & ";Integrated Security=True;Connect Timeout=30;User Instance=True")
cmd = New SqlCommand(cmdString, conn)
conn.Open()
Dim myReader As SqlDataReader
myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
While myReader.Read
result.Add(myReader("au_lname").ToString)
End While
Return result
End Function
2.插入数据
Private Sub MyTestInsert()
InsertData()
Console.WriteLine("Press Enter to exit")
Console.Read()
End Sub
Private Sub InsertData()
Dim conn As SqlConnection
Dim cmd As SqlCommand
Dim cmdString As String = "Insert authors(au_id,au_fname,au_lname,phone,contract) Values ('555-12-1212','Foo','deBar','212-555-1212',1)"
conn = New SqlConnection()
'获取数据库所在的文件夹()
Dim strPUBSMDF As String = Mid(My.Application.Info.DirectoryPath, 1, My.Application.Info.DirectoryPath.Length - 9)
conn = New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=" & strPUBSMDF & "pubs.mdf" & ";Integrated Security=True;Connect Timeout=30;User Instance=True")
cmd = New SqlCommand(cmdString, conn)
conn.Open()
cmd.ExecuteNonQuery()
cmdString = "Select au_fname,au_lname,phone From authors Where au_lname='deBar'"
cmd = New SqlCommand(cmdString, conn)
Using reader As SqlDataReader = cmd.ExecuteReader
While reader.Read
Console.WriteLine("{0}{1}:{2}", reader.GetString(0), reader.GetString(1), reader.GetString(2))
End While
End Using
conn.Close()
End Sub
3.更新数据
Private Sub MyTestUpdate()
Dim records As Integer
records = UpdateRoyaltySchedule(10, 8)
Console.WriteLine("{0} records affected", records)
Console.WriteLine("Press ENTER to exit.")
Console.Read()
End Sub
Private Function UpdateRoyaltySchedule(ByVal currentPercent As Integer, ByVal newPercent As Integer) As Integer
Dim cmd As SqlCommand
Dim result As Integer
Dim cmdString As String = _
String.Format("Update roysched Set royalty={0} where royalty={1}", newPercent, currentPercent)
'获取数据库所在的文件夹()
Dim strPUBSMDF As String = Mid(My.Application.Info.DirectoryPath, 1, My.Application.Info.DirectoryPath.Length - 9)
Using conn = New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=" & strPUBSMDF & "pubs.mdf" & ";Integrated Security=True;Connect Timeout=30;User Instance=True")
conn.Open()
DisplayData(conn, "befor")
cmd = New SqlCommand(cmdString, conn)
result = cmd.ExecuteNonQuery
displayData(conn, "after")
End Using
Return result
End Function
Private Sub DisplayData(ByVal conn As SqlConnection, ByVal direction As String)
Dim cmdString As String = "Select * From roysched Order By title_id"
Dim cmd As New SqlCommand(cmdString, conn)
Console.WriteLine("Displaying data ({0})", direction)
Using reader As SqlDataReader = cmd.ExecuteReader
While reader.Read
Console.WriteLine _
("Title:{0} {1}-{2} Royalty:{3}%", _
reader.GetString(0), reader.GetInt32(1), reader.GetInt32(2), reader.GetInt32(3))
End While
End Using
End Sub
4.删除数据
Private Sub MyTestDelete()
Dim deletes As Integer
Console.WriteLine("{0} author(s) deleted", deletes)
Console.WriteLine("Press ENTER to exit.")
Console.Read()
End Sub
Public Function DeleteAuthor(ByVal lastName As String) As Integer
Dim result As Integer
Dim cmd As SqlCommand
Dim cmdString As String = String.Format("Delete authors Where au_lname='{0}'", lastName)
'获取数据库所在的文件夹()
Dim strPUBSMDF As String = Mid(My.Application.Info.DirectoryPath, 1, My.Application.Info.DirectoryPath.Length - 9)
Using conn = New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=" & strPUBSMDF & "pubs.mdf" & ";Integrated Security=True;Connect Timeout=30;User Instance=True")
cmd = New SqlCommand(cmdString, conn)
conn.Open()
DisplayDataD(conn, "before")
result = cmd.ExecuteNonQuery
DisplayDataD(conn, "after")
End Using
Return result
End Function
Private Sub DisplayDataD(ByVal conn As SqlConnection, ByVal direction As String)
Dim cmdstring As String = "Select count(*) From authors"
Dim cmd As New SqlCommand(cmdstring, conn)
Dim count As Integer = CType(cmd.ExecuteScalar, Integer)
Console.WriteLine("Number of authors {0}:{1}", direction, count)
End Sub