Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将Datagridview中的命令更新到数据库_Sql_Vb.net_Datagridview - Fatal编程技术网

Sql 将Datagridview中的命令更新到数据库

Sql 将Datagridview中的命令更新到数据库,sql,vb.net,datagridview,Sql,Vb.net,Datagridview,到目前为止,我一直在处理我的数据库问题,我无法继续使用新模块,因为我无法通过datagridview更新我的数据库 有人能检查一下我的代码吗?为什么我不能用点击按钮在datagridview中更新我的数据库 下面是我如何获得datagrid内容的: Public Sub loaddgvfrm3() cmdconn = New SqlConnection cmd = New SqlCommand cmdconn.ConnectionString = sqlstr c

到目前为止,我一直在处理我的数据库问题,我无法继续使用新模块,因为我无法通过datagridview更新我的数据库

有人能检查一下我的代码吗?为什么我不能用点击按钮在datagridview中更新我的数据库

下面是我如何获得datagrid内容的:

Public Sub loaddgvfrm3()
    cmdconn = New SqlConnection
    cmd = New SqlCommand
    cmdconn.ConnectionString = sqlstr
    cmdconn.Open()
    cmd.Connection = cmdconn
    cmd.CommandText = "select  period, VOUCH_AMT, INDIVIDUAL_AMT, check_no, D_MAILED, DIR_NO, who_updated, claim_no,  year_student from tobee.EBD_BILLHISTORY where CLAIM_NO like '" + txtClaimno.Text + "'"
    'cmd.CommandText = "select  a.period, a.VOUCH_AMT, a.INDIVIDUAL_AMT, a.check_no, a.bal_ent, a.D_MAILED, a.DIR_NO from tobee.EBD_BILLHISTORY a left join carlos.claims_waivee b on a.CLAIM_NO = b.claim_no where b.CLAIM_NO like '" + claimno.ToString + "'"
    Dim dt As New DataTable
    'Dim ds As New DataSet
    da = New SqlDataAdapter
    da.SelectCommand = cmd
    da.Fill(dt)
    Me.DataGridView1.DataSource = dt
    Me.DataGridView2.DataSource = dt
    cmdconn.Close()
End Sub
现在我想修改datagridview中的一些行,并用按钮单击更新对数据库所做的更改

这是我的按钮点击代码:

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click


    Dim connstr As String = "server=midtelephone\sqlexpress; database=testdb; user= sa; password=sa;"
    Dim cmd2 As New SqlCommand

    Try
        Using connection As New SqlConnection(connstr)
            connection.Open()
            cmd2.CommandText = "update tobee.EBD_BILLHISTORY set period=@period, vouch_amt=@vouch_amt, individual_amt=@individual_amt, check_no=@check_no, d_mailed=@d_mailed, dir_no=@dir_no, who_updated=@who_updated where claim_no = '" + txtClaimno.Text + "' "

            cmd2.Parameters.Add("@period", SqlDbType.Char, 25, "period")
            cmd2.Parameters.Add(New SqlParameter("@vouch_amt", SqlDbType.Decimal) With {.Precision = 18, .Scale = 2}).Value = "vouch_amt"
            cmd.Parameters.Add(New SqlParameter("@individual_amt", SqlDbType.Decimal) With {.Precision = 18, .Scale = 2}).Value = "individual_amt"

            cmd2.Parameters.Add("@check_no", SqlDbType.Char, 15, "check_no")
            'cmd2.Parameters.Add("@d_mailed", SqlDbType.DateTime, "d_mailed")
            cmd2.Parameters.Add("@dir_no", SqlDbType.Char, 15, "DIR_NO")
            cmd2.Parameters.Add("@who_updated", SqlDbType.Char, 15, "who_updated")
            cmd2.ExecuteNonQuery()
            connection.Close()
            MsgBox("changes done")
            'MessageBox.Show("Updated Successfully!", "Update", MessageBoxButtons.OK, MessageBoxIcon.Information)

        End Using
    Catch ex As Exception
    msgbox(ex.message)
    End Try

End Sub
“ExecuteOnQuery:连接属性尚未初始化”出现的问题
mybutton save可能有什么问题?(我不知道我做的是否正确,我是否正确连接了这两个“Sub”?)如果您对(更新)我在datagridview中所做的更改有任何其他建议,请。请随意修改保存按钮:(

您似乎忘记设置
cmd2
Connection
属性。只需在
Connection.Open()之后添加此行即可:

更新:

您可以尝试使用
DataAdapter
Update()
函数将DataTable作为参数传递,以将更改从DataTable提交到数据库:

da.Update(dt);

[]

将断点置于
Catch
块中,在调试模式下运行应用程序。如果应用程序转到
Catch
,请深入
ex
以获得有关异常原因的尽可能多的信息。或者至少,放入
MessageBox.Show(“某物”)
Catch
块中,在异常发生时得到更新通知。ExecuteOnQuery:connection属性尚未初始化。这就是错误。我的savebtn sub是否以某种方式连接到loaddgvfrm?:(根据错误消息,您似乎错过了一行。检查我的答案:)关于第二个问题:没有。鉴于sub中本地声明的所有变量,两个sub都没有以任何方式连接。如何连接这两个sub?使按钮函数与datagridview一起工作?谢谢。现在新的错误是"无法将参数值从字符串转换为十进制。现在可能出现什么错误?:/我以前做过,但不知怎的,我找不到任何关于如何链接loaddgv sub和btnsave sub的解决方案。这就是我现在试图查找的。如果我理解你正确链接loaddgv sub和btnsave sub的意思。我上面的更新意味着可以通过这种方式将DataTable(DGV的数据源)中的更改提交回数据库。将该行代码放在btnsave sub中,并且给定
dt
为全局变量(声明在sub之外),然后现在链接这两个sub(针对DataTable的同一实例操作).Update在传递带有修改行的DataRow集合时需要一个有效的UpdateCommand。这是一个新错误只是为了给你一个提示,我没有执行任何数据集命令。因为这让我更加困惑。我是vb.net的新手:(
da.Update(dt);