将DataGridView保存为SQL dB时,值不能为NULL

时间:2014-05-19 14:14:19

标签: sql-server vb.net datagridview

我有一个带有datagridview(ViewCustomersForm)和保存按钮的表单。

我要做的是让用户在datagrid视图中编辑信息,然后点击一个保存按钮,这会将值保存回我的SQL表。

不幸的是,当按下我的保存按钮时,我收到以下错误。

"值不能为空。"

指着这行代码:

dataadapter.Update(ds.Tables("Customers_table"))

在以下代码的上下文中:

Private Sub ViewCustomersForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'Customers._Customers' table. You can move, or remove it, as needed.
    Dim connStr As String = "server=barry-laptop\SQLEXPRESS; database=BillingReferenceData; integrated security=yes"
    Dim sql As String = "SELECT * FROM Customers"
    Dim conn As SqlConnection = New SqlConnection(connStr)
    Dim comm As SqlCommand = New SqlCommand(sql, conn)
    Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm)
    Dim ds As DataSet = New DataSet()

    '---open the connection and fill the dataset---
    conn.Open()
    dataadapter.Fill(ds, "Customers_table")
    conn.Close()
    DataGridView1.DataSource = ds
    DataGridView1.DataMember = "Customers_table"


End Sub

Private Sub SaveButton_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim connStr As String = "server=barry-laptop\SQLEXPRESS; database=BillingReferenceData; integrated security=yes"
    Dim sql As String = "SELECT * FROM Customers"
    Dim conn As SqlConnection = New SqlConnection(connStr)
    Dim comm As SqlCommand = New SqlCommand(sql, conn)
    Dim ds As DataSet = New DataSet()
    Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm)

    Dim sqlCmdBuilder As New SqlCommandBuilder(dataadapter)
    sqlCmdBuilder.GetUpdateCommand()
    dataadapter.Update(ds.Tables("Customers_table"))

End Sub

我对VB比较新,所以任何帮助或指针都非常感激。

由于

1 个答案:

答案 0 :(得分:0)

我需要通过在Class级别定义的变量,而不是在Subs。

这是工作代码。

Imports System.Data.SqlClient
Imports System.Data.Common

Public Class ViewCustomersForm
Dim ds As DataSet = New DataSet()
Dim connStr As String = "server=barry-laptop\SQLEXPRESS; database=BillingReferenceData; integrated security=yes"
Dim sql As String = "SELECT * FROM Customers"
Dim conn As SqlConnection = New SqlConnection(connStr)
Dim comm As SqlCommand = New SqlCommand(Sql, conn)
Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm)

Private Sub Button1_Click(sender As Object, e As EventArgs)

End Sub

Private Sub ViewCustomersForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    '---open the connection and fill the dataset---
    conn.Open()
    dataadapter.Fill(ds, "Customers_table")
    conn.Close()
    DataGridView1.DataSource = ds
    DataGridView1.DataMember = "Customers_table"


End Sub

Private Sub Button_Click_1(sender As Object, e As EventArgs) Handles Button1.Click


    Dim sqlCmdBuilder As New SqlCommandBuilder(dataadapter)
    sqlCmdBuilder.GetUpdateCommand()
    dataadapter.Update(ds.Tables("Customers_table"))

End Sub

End Class