嘿,這是一項家庭作業,我只是無法弄清楚。任何幫助將是偉大的!VB.net數據綁定
創建一個名爲「people」的SQL Server數據庫,該數據庫具有下表。請使用Visual Studio 2012,並創建一個本地服務基於數據庫
people_id INT PK身份 姓VARCHAR(30) 姓氏VARCHAR(40)
創建一個Windows窗體程序,其中列出了ID,名字和姓氏的datagridview
在數據庫表中添加,更新和刪除功能(在使用命令對象和參數的代碼中,無嚮導)並反映datagridview中的更改。
這是我已經擁有的代碼。我可以運行我的程序,數據將顯示在datagridview中,但每當我添加更新或刪除數據時都不會發生任何事情。我不會拋出錯誤或任何東西。我不知道如何解決這個問題,請幫助!
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
Me.PeopleTableAdapter.Fill(Me.PeopleDataSet.people)
End Sub
Private Function getConnString() As String
Return My.Settings.PeopleConnectionString.ToString()
End Function
Private Sub ExitToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExitToolStripMenuItem.Click
Me.Close()
End Sub
Private Function getConnection() As String
Return My.Settings.PeopleConnectionString.ToString()
End Function
Private Function getPeople(lName As String) As DataTable
Dim sql As String
Dim conn As SqlConnection
Dim cmd As SqlCommand
Dim da As SqlDataAdapter
Dim dt As New DataTable
Dim plName As New SqlParameter
plName.ParameterName = "@lName"
plName.Value = lName
sql = "select * from people where lName = @lName"
conn = New SqlConnection(getConnection())
conn.Open()
cmd = New SqlCommand(sql, conn)
cmd.Parameters.Add(plName)
da = New SqlDataAdapter(cmd)
da.Fill(dt)
conn.Close()
Return dt
End Function
Private Sub AddPerson(fname As String, lname As String, person_ID As Integer)
Dim sql As String
Dim conn As SqlConnection
Dim cmd As SqlCommand
sql = "insert into people(fName, lName, person_ID) values("
sql += "@fName, @lName, @person_ID)"
conn = New SqlConnection(getConnection())
conn.Open()
cmd = New SqlCommand(sql, conn)
cmd.Parameters.AddWithValue("@fName", fname)
cmd.Parameters.AddWithValue("@lName", lname)
cmd.Parameters.AddWithValue("@person_ID", person_ID)
cmd.ExecuteNonQuery()
conn.Close()
End Sub
Private Sub btnADD_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
Try
AddPerson(txtfName.Text, txtlName.Text, txtpID.Text)
MessageBox.Show("Added")
Catch ex As Exception
MessageBox.Show("Error" & ex.Message)
End Try
End Sub
Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
If DataGridView1.SelectedRows.Count > 0 Then
Dim dr As DataGridViewRow = DataGridView1.SelectedRows(0)
txtfName.Text = dr.Cells(1).Value.ToString()
txtlName.Text = dr.Cells(2).Value.ToString()
txtpID.Text = dr.Cells(0).Value.ToString()
End If
End Sub
Private Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click
Dim sql As String
Dim conn As SqlConnection
Dim cmd As SqlCommand
sql = "update people set [email protected], [email protected]"
sql += " where [email protected]_ID"
conn = New SqlConnection(getConnection())
conn.Open()
cmd = New SqlCommand(sql, conn)
cmd.Parameters.AddWithValue("@fName", txtfName.Text)
cmd.Parameters.AddWithValue("@lName", txtlName.Text)
cmd.Parameters.AddWithValue("@person_ID", txtpID.Text)
cmd.ExecuteNonQuery()
conn.Close()
End Sub
Private Sub btnView_Click(sender As Object, e As EventArgs) Handles btnView.Click
Dim sql As String
Dim conn As SqlConnection
Dim cmd As SqlCommand
sql = "delete from people where [email protected]_ID"
conn = New SqlConnection(getConnection())
conn.Open()
cmd = New SqlCommand(sql, conn)
cmd.Parameters.AddWithValue("@person_ID", txtpID.Text)
cmd.ExecuteNonQuery()
conn.Close()
End Sub
End Class
你怎麼確定「什麼都沒有發生」? – Plutonix
不知道,在btnAdd動作中,我有一個if語句,假如有錯誤,我們會捕捉它。它正在通過這個很好的,但如果我檢查我的數據庫沒有實際添加。 –
在你調用'ExecuteNonQuery'的'AddPerson'方法中。這會返回什麼價值。如果它不爲零,那麼數據將被保存,並且您在錯誤的時間查看錯誤的數據庫或正確的數據庫。我猜你已經添加了一個數據庫到你的項目中,並且它的「複製到輸出目錄」屬性沒有從默認值改變。是對的嗎?如果是這樣,那麼每次構建時都會用乾淨的工作數據庫覆蓋您的工作數據庫。 – jmcilhinney