VB.net数据绑定

时间:2015-10-20 00:15:01

标签: sql-server vb.net datagridview

嘿,这是一项家庭作业,我无法理解。任何帮助都会很棒!

创建名为"人员"的SQL Server数据库有下表。请使用Visual Studio 2012并创建基于本地服务的数据库

people_id int PK身份 firstname varchar(30) lastname varchar(40)

创建一个Windows表单程序,列出datagridview中的id,firstname和lastname

提供功能(在代码中使用命令对象和参数,没有向导)从数据库表中添加,更新和删除,并反映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 fName=@fName, lName=@lName"
    sql += " where person_ID=@person_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 person_ID=@person_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

1 个答案:

答案 0 :(得分:1)

很抱歉,我没有50个声誉。

对于任何连接,你无法预测数据库是否正在运行,所以你必须输入try catch并向用户/支持返回一条消息,让他们知道这个问题发生了什么,对于vb中的异常类型,请检查如下: Introduction to Exception Handling in Visual Basic .NET

请使用

try{
    ' your action, connection or sql exe
    ' example using your update event
    Dim sql As String
    Dim conn As SqlConnection
    Dim cmd As SqlCommand
    sql = "update people set fName=@fName, lName=@lName"
    sql += " where person_ID=@person_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()
}catch(Exception e){
    ' print the error message from here to let u know the function/ event error or not
    ' check the exception message
    ' MsgBox(e.ToString())
    conn.Close()
} finally {
    conn.Close()
}

检查按钮事件是否错误。

我也经常使用

MsgBox("Alert") 

帮我检查功能或事件是否已经运行。

希望帮助。

还有一件事...... 请将连接键入为类,这样您就不必多次输入。