【发布时间】:2016-11-18 20:22:19
【问题描述】:
我正在使用 Datagridview 显示来自 2 个表的连接记录。显示的数据来自连接表(表 3)中的表 + 数据之一。 SQL 查询在 Datagridview 中返回结果(在 Oracle 中也可以正常工作),但更新失败并显示“动态 SQL 生成失败。未找到基表或找到多个基表”。这是我的桌子设计:
Table1:
ID_TABLE1
ITEM_NAME
ITEM_DESCRIPTION
Table3: (this is a joined view for Table1 and Table2)
ID_TABLE3
ID_TABLE1_FK
ID_TABLE3_FK
VALIDITY
DATE_CONNECTION
我的代码(完全按照 Oracle 的建议):
Public Class Form2
Private da As OracleDataAdapter
Private cb As OracleCommandBuilder
Private ds As DataSet
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Saving.Enabled = False 'this deals with error with updating (from Oracle site)
Dim SQL As String = "SELECT ID_TABLE1, ID_TABLE3, SERIAL_NO, ITEM_NAME, ITEM_DESCRIPTION, VALIDITY, DATE_CONNECTION from TABLE1, TABLE2 WHERE TABLE3.ID_TABLE1_FK=" & Form1.DataGridView1.CurrentRow.Cells(0).Value.ToString
Try
Oracleconn() 'connection to my DB
Dim cmd = New OracleCommand(SQL, Oracleconn)
cmd.CommandType = CommandType.Text
da = New OracleDataAdapter(cmd)
cb = New OracleCommandBuilder(da)
ds = New DataSet()
da.Fill(ds)
My_DGV.DataSource = ds.Tables(0)
Saving.Enabled = True
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
'No closing of connection here because of working with Dataset (Oracle suggestion)
End Try
End Sub
Private Sub Saving
da.Update(ds.Tables(0))
Saving.Enabled = True
End Sub
End Class
那么,我的 SQL 查询是错误的还是什么?任何帮助将不胜感激!
P.S.:在实际情况下,只有 Table3 中的“VALIDITY”列可以为用户更改,所以我只需要更新那个字段。
【问题讨论】:
-
@phonetic_man,感谢您的链接。我的假设可能是对的,应该用 JOIN 构造 SQL。虽然我无法为它找出正确的合成器:(
标签: sql vb.net oracle datagridview