Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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
Vb.net 在VB中从Gridview中的数据更新数据库_Vb.net - Fatal编程技术网

Vb.net 在VB中从Gridview中的数据更新数据库

Vb.net 在VB中从Gridview中的数据更新数据库,vb.net,Vb.net,这是用于将数据从数据库显示到gridview的代码…如果我在gridview中进行任何更改,并且它必须在数据库中更新…我不知道如何执行…有人能帮我吗 Dim DBCONSRT, QRYSTR As String Dim strSQL As String Dim DBCON, myConn, myCommand, rs As Object Dim NoOfRecords As Long rs = CreateObject("ADODB.Recordse

这是用于将数据从数据库显示到gridview的代码…如果我在gridview中进行任何更改,并且它必须在数据库中更新…我不知道如何执行…有人能帮我吗

    Dim DBCONSRT, QRYSTR As String

    Dim strSQL As String

    Dim DBCON, myConn, myCommand, rs As Object

    Dim NoOfRecords As Long
    rs = CreateObject("ADODB.Recordset")
    Const DB_CONNECT_STRING = "Provider=MSDASQL.1;Persist Security Info=False;User ID=cpa5k;Data Source=NP1;DSN=NP1;UID=cpa5k;PASSWORD=pass;SDSN=Default;HST=ibslnpb1.sysplex.homedepot.com;PRT=4101;Initial Catalog=QA1MM;"
    myConn = CreateObject("ADODB.Connection")
    myCommand = CreateObject("ADODB.Command")
    myConn.Open(DB_CONNECT_STRING)
    myCommand.ActiveConnection = myConn
    strSQL = "select * from QA1MM.STRSK_OH FETCH FIRST 10 ROWS ONLY with ur;"
    rs.Open(strSQL, myConn)
    Dim myDA As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
    Dim myDS As DataSet = New DataSet

    myDA.Fill(myDS, rs, "MyTable")
    DataGridView1.DataSource = myDS.Tables(0)
    DataGridView1.Refresh()
    myConn.Close()
我正在尝试这种方法,但不起作用

    Dim myDA As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
    Dim myDS As DataSet = New DataSet
    myDA.Fill(myDS, rs, "MyTable")
    ds = DataGridView1.DataSource
    myDA.Update(ds)
我是这样改变的:

    Dim DBCONSRT, QRYSTR As String
    Dim strSQL As String
    Dim DBCON, myConn, myCommand, rs As Object
    Dim ds As DataSet = New DataSet
    rs = CreateObject("ADODB.Recordset")
    Const DB_CONNECT_STRING = "Provider=MSDASQL.1;Persist Security Info=False;User ID=cpa5k;Data Source=NP1;DSN=NP1;UID=cpa5k;PASSWORD=mexico13;SDSN=Default;HST=ibslnpb1.sysplex.homedepot.com;PRT=4101;Initial Catalog=QA1MM;"
    myConn = CreateObject("ADODB.Connection")
    myCommand = CreateObject("ADODB.Command")
    myConn.Open(DB_CONNECT_STRING)
    myCommand.ActiveConnection = myConn

    Dim myDA As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter
    Dim myDS As DataSet = New DataSet
    Dim dtable As DataTable = New DataTable()
    myDA.UpdateCommand = New SqlClient.SqlCommand("UPDATE QA1MM.STRSK_OH set OH_QTY = 10  WHERE SKU_NBR = 108011", myConn)
    '   myDA.UpdateCommand.Parameters.Add("@OH_QTY", OleDb.OleDbType.VarChar, 15, "OH_QTY")
    '   myDA.UpdateCommand.Parameters.Add("@SKU_NBR", OleDb.OleDbType.VarChar, 15, "SKU_NBR")
    '   myDA.UpdateCommand.Parameters(0).SourceVersion = DataRowVersion.Current
    '   myDA.UpdateCommand.Parameters(1).SourceVersion = DataRowVersion.Current
    dtable = DataGridView1.DataSource
    myDA.Update(dtable)
    myConn.Close()
但它给出的错误就像无法将“System.\u ComObject”类型的COM对象强制转换为“System.Data.SqlClient.SqlConnection”类型的类。表示COM组件的类型实例不能转换为不表示COM组件的类型;但是,只要底层COM组件支持对接口IID的QueryInterface调用,就可以将它们转换为接口。”

我更改了连接字符串,如下所示:

Provider=MSDASQL.1;Persist Security Info=False;Data 
Source=NP1;DSN=NP1;SDSN=Default;HST=ibslnpb1.sysplex.homedepot.com;PRT=4101;Integrated 
Security = True;Initial Catalog=QA1MM;
它不工作。错误是“多步骤OLE DB操作生成的错误”。检查每个OLE DB状态值(如果可用)。“没有完成任何工作。”……对不起,我不知道如何更改……。

您像下面这样写

myConn.Open(DB_CONNECT_STRING) 
myDA.Update(ds.Tables(0))
myConn.Close() 
编辑:

不要将DataGridView1的数据源放入数据集中,而是按如下方式放入DataTable

            Dim dtable As New DataTable()
            dtable = DataGridView1.DataSource
并使用DataAdapter更新表,如下所示

myConn.Open(DB_CONNECT_STRING) 
myDA.Update(dtable)
myConn.Close() 
请参阅此链接,尝试以下操作:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        DataSet1.Tables("employee").AcceptChanges()
        Dim i As Integer
        Dim cmdbuilder As New OdbcCommandBuilder(odbcadptr)
        i = odbcadptr.Update(odbcds, "customer")
        MsgBox("Updated Rows: " & i)
End Sub

按照我的更改更改编码。连接字符串中的No enable Integrated Security=true。请在此处删除您以前的一些评论以继续评论。@SaiKalyanAkshinthala这正是您不应该做的。请在聊天中继续讨论。请将相关信息编辑到问题和/或答案中,甚至发布新的答案与新的细节,如果这是必要的。一个问题/答案的评论部分只是针对有关实际职位的相关信息,如错误,要求更多细节等,而不是长时间的讨论,即使它们可能有助于相关的人。如果你需要继续讨论,请考虑塔基把它放到聊天室里。