【问题标题】:Unable to compare SQL and datatable and copy new entries to sql table无法比较 SQL 和数据表并将新条目复制到 sql 表
【发布时间】:2014-11-18 18:26:37
【问题描述】:

我尝试在 VB.NET 中对我的 SQL Server 2012 数据库运行左连接,但我被这段代码卡住了:

Dim dtTabelle1 as DataTable
(first Column of dtTabelle1 = Zyklus ID)

Dim con As SqlConnection
Dim conString, cmdString As String
Dim cmd As SqlClient.SqlCommand

conString = "path"
con = New SqlConnection(conString)
con.Open()

dtTabelle1.TableName = "Test"

cmdString = "INSERT INTO Daten ([Zyklus ID])" & _
                "Select [Zyklus ID]" & _
                "FROM Test " & _
                "LEFT JOIN Daten ON (Test.[Zyklus ID] = Daten.[Zyklus ID])" & _
                    "WHERE (Daten.[Zyklus ID] IS NULL);"

cmd = New SqlCommand(cmdString, con)
cmd.CommandType = CommandType.Text

cmd.ExecuteNonQuery()
con.Close()

我得到一个错误:

无效的对象名称“测试”

(顺便说一句,我无法更改“Zyklus ID”中的空白:()。

dtTabelle1被填满,架构与服务器Daten上的目标数据库相同。

【问题讨论】:

  • 表Test是在什么架构下?在“默认”dbo 下还是不同?
  • 架构是默认的
  • 还有一个问题:脚本的目标数据库是否正确?旁注:总是尝试在表名前加上 schemaName。 (即引用表作为 SchemaName.TableName)
  • 那会是什么样子? default.Test?
  • 不,它看起来像 dbo.Test。我指的是 dbo 模式的“默认”。

标签: sql sql-server vb.net datatable sqlbulkcopy


【解决方案1】:

如果你使用别名用于表格会更好

试试这样:

cmdString = "INSERT INTO Daten ([Zyklus ID])" & _
                "Select T.[Zyklus ID]" & _
                "FROM Test T " & _
                "LEFT JOIN Daten D ON (T.[Zyklus ID] = D.[Zyklus ID])" & _
                    "WHERE (D.[Zyklus ID] IS NULL);"

【讨论】:

    【解决方案2】:

    请在查询的 SQL 语句之间放置适当的空格

    cmdString = "INSERT INTO Daten ([Zyklus ID]) " & _
                "SELECT [Zyklus ID] " & _
                "FROM Test " & _
                "LEFT JOIN Daten ON (Test.[Zyklus ID] = Daten.[Zyklus ID]) " & _
                "WHERE (Daten.[Zyklus ID] IS NULL);"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      相关资源
      最近更新 更多