如何在带有虚拟列的Oracle表中插入数据?

时间:2018-08-13 19:50:30

标签: vb.net oracle dataadapter

我有一个.Net应用程序,可从oracle数据库加载数据表。该表包含一个虚拟列。

当我在数据表中插入新行时,它说:

  

不允许在虚拟列上插入INSERT操作

我确实理解了此错误,但是我不知道在将数据保存回数据库时如何跳过虚拟列。

这是我的代码:

    Dim Command As OracleCommand
    Dim TempDataAdapter As OracleDataAdapter
    Dim DataSet = new DataSet
    Dim Name = "MyTable"
    Dim TempDataAdapter As OracleDataAdapter
    Dim DataTable as DataTable

    'The connection is defined somewhere else...
    Command = New OracleCommand("MyTable", Me.Connection) 
    Command.CommandType = CommandType.Text

    TempDataAdapter = New OracleDataAdapter(Command)

    'Fill the table from the database 
    TempDataAdapter.FillSchema(DataSet, SchemaType.Source, Name)
    DataTable = DataTable = DataSet.Tables(0)           

以及用于将数据保存回数据库的代码:

    TempDataAdapter.Update(DataTable)

创建数据表后,我尝试从数据表中删除虚拟列:         DataTable.Columns.Remove(DataTable.Columns(“ MyVirtualColumn”))

但是将数据保存回数据库时,它会返回相同的错误。

任何人都可以帮忙吗?

干杯

2 个答案:

答案 0 :(得分:3)

如果您不想填充或查询虚拟列,是否可以在该表上创建一个视图,以排除虚拟列并使用该视图。

答案 1 :(得分:0)

当您将数据插入带有虚拟列的表中时,则必须列出列,即e。您不得使用

Insert into table_x values (x, y, z)

但是

Insert into table_x (col1, col2, col3) values (x, y, z)

相应地编写.net语句