嘿,这是一项家庭作业,我只是无法弄清楚。任何帮助将是伟大的!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