首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未分配ConnectionString的SqlCommandBuilder

未分配ConnectionString的SqlCommandBuilder
EN

Stack Overflow用户
提问于 2010-12-21 00:43:59
回答 1查看 741关注 0票数 1

我在布局视图中使用devexpress XtraGrid来编辑最近创建的数据库行。这是我用来加载数据的代码:

代码语言:javascript
复制
Public Function SetData(ByVal connString As String, ByVal tabla As String) As Boolean
    Dim d As New DataTable
    Dim cmd As New SqlCommand

    Try
        Using conn As New SqlConnection(connString)
            conn.Open()
            cmd.Connection = conn

            m_Tabla = tabla
            If (m_Id = "") Then
                cmd.CommandText = "SELECT * FROM " & m_Tabla
            Else
                cmd.CommandText = "SELECT * FROM " & m_Tabla & " WHERE IdCaptura = '" & m_Id & "'"
            End If

            m_Adapter = New SqlDataAdapter(cmd)
            m_DataSet = New DataSet()
            m_Adapter.Fill(m_DataSet, m_Tabla)

            grdMetadata.DataSource = m_DataSet.Tables(m_Tabla)
            Return True
        End Using

    Catch ex As Exception
        Return False
    End Try
End Function

每个客户端的数据库可能不同,所以我不能写update命令;我一直在调查这个问题,我的结论是我需要使用SqlCommandBuilder来自动生成它。

当用户结束编辑数据时,我使用以下代码片段来更新数据库:

代码语言:javascript
复制
Private Sub btnAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAceptar.Click
    Try
        Dim builder As New SqlCommandBuilder(m_Adapter)

        grdLayoutView.CloseEditor()
        grdLayoutView.UpdateCurrentRow()
        m_Adapter.Update(m_DataSet, m_Tabla) *

    Catch ex As Exception
        lblEstado.Text = ex.Message
    End Try
End Sub

在标有*的行中,我得到了一个“ConnectionString属性尚未初始化”异常。该表有一个主键列(IdCaptura),如果我在上述行中放置断点,我可以看到DataAdapter.UpdateCommand设置为nothing。

你知道这里出了什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-21 06:08:42

在调用第二个代码片段时,根据using语句,您在第一个代码片段中创建的SqlConnection已经被释放。这就是它没有初始化的原因。您将不得不要么不处理那里的连接,要么为您的第二个代码片段创建另一个连接。

例如,如下所示:

代码语言:javascript
复制
Private Sub btnAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAceptar.Click
    Try
        Using conn As New SqlConnection(connString) ' <--- need to get the connection string from somewhere here '
            conn.Open()
            m_Adapter.UpdateCommand.Connection = conn
            Dim builder As New SqlCommandBuilder(m_Adapter)

            grdLayoutView.CloseEditor()
            grdLayoutView.UpdateCurrentRow()
            m_Adapter.Update(m_DataSet, m_Tabla) *
        End Using
    Catch ex As Exception
        lblEstado.Text = ex.Message
    End Try
End Sub
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4491789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档