我正在try 做一件非常简单的事情:使用SQL查询向现有查询或表添加新列.但是,每次我try 这样做时,我都会收到"查询必须至少有一个目标字段"错误.我不确定我的错误在哪里.

我试过的代码是:

ALTER TABLE Notes_file
ADD DateOfBirth date;

我已经从ALTER TABLE命令的文档中摘录了这一点.我try 过查询和表,以及不同的列类型.

虽然我引起了您的注意,但我最终还是想把它放到我的VB Studio代码中.一旦我让ALTER命令正常工作,我不确定我应该如何在VB Studio中实现它.我应该使用.CreateQueryDef还是.Execute?

Dim alterQuery As String = "ALTER TABLE FormStats ADD freq_tot single;"

With qdfTemp1
    rstTemp = .OpenRecordset(DAO.RecordsetTypeEnum.dbOpenSnapshot)
    Debug.Print("beginning read of initial query(1)")

    With rstTemp
        Dim listing_form As String = VB6.Format(rstTemp.form_code.value, "##")
        .Execute("FormStats", alterQuery)

推荐答案

当您try 执行一个不返回任何结果的SQL查询,并且该查询是以预期结果的方式执行时,通常会出现错误消息"查询必须至少有一个目标字段".在ALTER TABLE语句中,它不返回结果集,这就是您遇到此错误的原因.

要使用SQL查询向现有表添加新列,不需要像处理数据操作查询那样使用.OpenRecordset或.Execute.相反,您可以使用命令对象直接执行ALTER TABLE语句.

下面是如何修改VB.NET代码以向现有表中添加新列的方法:

Imports System.Data.OleDb

' Create a connection to your database
Dim connectionString As String = "Provider=YourProvider;Data Source=YourDataSource;"

Using connection As New OleDbConnection(connectionString)
    connection.Open()

    ' Define the SQL query to add the new column
    Dim alterQuery As String = "ALTER TABLE FormStats ADD freq_tot SINGLE"

    ' Create a command object to execute the query
    Using command As New OleDbCommand(alterQuery, connection)
        Try
            ' Execute the ALTER TABLE statement
            command.ExecuteNonQuery()
            Debug.Print("Column added successfully.")
        Catch ex As Exception
            Debug.Print("Error: " & ex.Message)
        End Try
    End Using

    ' Close the connection
    connection.Close()
End Using

在此代码中:

您使用OleDbConnection类建立了到数据库的连接. 您可以在AlternQuery变量中定义ALTER TABLE查询. 您可以创建一个OleDbCommand对象来执行查询. 您可以使用ExecuteNonQuery来执行查询,这适用于ALTER TABLE等非查询SQL语句. 确保用您的实际连接字符串替换"Provider=YourProvider;Data Source=YourDataSource;".

此代码将把freq_tot列添加到FormStats表中.

Sql相关问答推荐

帮助修复查询以识别SQL DW中数据中的递归关系

在SQL Server中使用LEFT连接包含特定记录

在SQL中创建一个计数器,根据BigQuery/SQL中的条件递归地添加行值

在请求结束之前,PostgreSQL不会考虑使用中的删除

将主表与历史表连接以获取主表的当前汇率以及历史表中的上一个和最后一个汇率

返回包含列和包含其他列的列表的自定义查询

Ffltter&;Dart SQL Lite包:是否可以在一个查询中执行多条更新语句(每次执行不同的WHERE参数)

判断序列索引处的序列是否完整

使用列表作为参数进行 Select ,如果为空,则在PostgreSQL中不使用参数进行 Select

如何用HeidiSQL在Firebird中设置超时?

SQL查询正在工作,但返回空结果

如何在 golang squirrel lib 中添加 postgreSQL 的distinct on

DbUp for sqlserver 在 dbo 授权下为非 dbo 用户创建架构

创建具有多个子查询的 SQL 视图

SQL 中的第一个值和倒数第二个值

PostgreSQL-用第一个非空填充以前的值

函数调用作为插入值语句中的参数

T-SQL - 返回每条记录的最近雇佣日期

如何通过存储过程将 root 的下一个子 node 作为父 node ?

从多个连接返回 1 行到同一个表 - SQL Server