首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VB.net中使用vb.net查询?

在VB.net中使用vb.net查询?
EN

Stack Overflow用户
提问于 2017-08-07 21:04:02
回答 1查看 428关注 0票数 0

我有一个带CTE的有效SQL查询,我需要在我的vb.net应用程序中使用该查询,但问题是我得到了一个错误,指出:

代码语言:javascript
复制
"Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'"

代码是这样的:

代码语言:javascript
复制
    Dim da As New OleDbDataAdapter
    Dim ds As New DataSet
    Dim dt As New DataTable
    Dim sqlcmd As String = (";WITH q AS 
                                        (
                                         SELECT a.* 
                                         FROM SampleData AS a
                                         WHERE EXISTS (SELECT 1
                                                       FROM SampleData AS b
                                                       WHERE  a.Name = b.Name 
                                                         AND  a.Account= b.Account 
                                                         AND  a.Amount = -b.Amount)
                                         )
                            DELETE FROM q OUTPUT DELETED.* INTO SampleData2")



    If connDB.State = ConnectionState.Closed Then
        connDB.Open()
    End If

    Try

        ds.Tables.Add(dt)
        da = New OleDbDataAdapter(sqlcmd, connDB)
        da.Fill(dt)

对此有什么帮助吗?我找不到任何解决方案。

EN

回答 1

Stack Overflow用户

发布于 2017-08-08 21:48:01

这是我的函数,使用一个简单的CTE,使用这个函数来测试你的表达式,只需替换其中的CTE,看看,你可能需要修复你的查询。

代码语言:javascript
复制
Public Sub RecursiveData()
    Dim connectionString As String = "Initial Catalog=DBName;Data Source=ServerName;uid=user;password=mypassword;Connection Timeout=50000"

    Dim cteQuery As String = ";WITH   cte " & vbCrLf &
        " AS(SELECT 1 AS n " & vbCrLf &
        " UNION ALL " & vbCrLf &
        " SELECT n + 1 " & vbCrLf &
        " FROM   cte " & vbCrLf &
        " WHERE  n <50 " & vbCrLf &
        " ) " & vbCrLf &
        " SELECT n " & vbCrLf &
        " FROM cte where n <= 5; "

    Using _con As New SqlConnection(connectionString)
        Using _cmd As New SqlCommand(cteQuery, _con)

            _con.Open()

            Using rdr As SqlDataReader = _cmd.ExecuteReader()
                While rdr.Read()
                    Console.WriteLine(rdr.GetValue(0).ToString())
                End While

                rdr.Close()
            End Using

            _con.Close()
        End Using
    End Using

End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45547625

复制
相关文章

相似问题

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