【发布时间】:2018-10-07 10:05:07
【问题描述】:
如何使用 OleDB 从不同的表中插入参数?
我有 3 张桌子: 1. itemTbl 2. crateTbl 3.内容表
itemTbl 有:itemID、itemName、itemDesc crateTbl 有:crateID、crateName contentTbl 有:crateID、itemID、数量
contentTbl 是 crate 的内容和每个的数量
我需要它来选择我使用WHERE 的不同表中的值。我尝试过使用本地数据库和基于服务的数据库的类似代码,它们允许我使用,但 OleDB 不允许我使用 VALUES((SELECT))....
错误信息:
System.Data.OleDb.OleDbException: '查询输入必须包含至少一个表或查询。
我的代码:
cmd.Dispose();
cmd.CommandText = @"INSERT INTO contentTbl(crateID,itemID,qty) VALUES((SELECT crateTbl.crateID FROM crateTbl WHERE crateTbl.crateID=?),(SELECT itemTbl.itemID FROM itemTbl WHERE itemTbl.itemID = ?), ?)";
cmd.Connection = con;
cmd.Parameters.Add(new OleDbParameter("crateID", txtCrate.Text));
cmd.Parameters.Add(new OleDbParameter("itemID", txtItem.Text));
cmd.Parameters.Add(new OleDbParameter("qty", txtQty.Text));
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Done!");
da.SelectCommand = new OleDbCommand("SELECT * FROM contentTbl", con);
da.Fill(dt);
dgvContent.DataSource = dt;
【问题讨论】:
-
我注意到的第一件事是您的列列表末尾有一个额外的逗号。第二件事是
OLEDB doesn't let me use VALUES((SELECT))并没有真正告诉我们太多。您收到错误消息吗?如果是这样,它是什么?您正在使用什么数据库? -
我正在编辑那个 xD 抱歉。我正在使用访问数据库。它说: System.Data.OleDb.OleDbException: '查询输入必须包含至少一个表或查询。'
-
自从我上次使用 ms-access 以来已经很久了。您确定语法有效吗?您是否尝试将值硬编码到参数占位符中并直接在 access 中运行?
标签: c# ms-access oledb oledbcommand