【发布时间】:2012-11-18 14:17:52
【问题描述】:
我的表单上有 2 个组合框(在表单加载事件中)。表单加载后,第一个组合框从 select 语句中获取一个值。我想在我的第二个组合框中使用该值。这是我的代码:
1ste Combobox = cbDelivery
OracleConnection conn = new OracleConnection();
conn.ConnectionString = "User Id=christob;Password=CHRISTOB;Host=poseidon;Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0;Port=1522;Sid=GLODCD";
conn.Open();
string query;
query = "select distinct dd.delivery_bay_code from dc_delivery dd, dc_grv dg where delivery_complete_datetime is null and dd.dc_delivery_id_no = dg.dc_delivery_id_no and dd.delivery_announce_datetime is null";
OracleCommand cmd = new OracleCommand(query, conn);
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
cbDelivery.Items.Add(dr["delivery_bay_code"]);
}
dr.Close();
conn.Close();
2de Combobox = cbOrderNo
此组合框位于:
private void cbDelivery_SelectedIndexChanged(object sender, EventArgs e)
所以一旦我从第一个组合框中选择一个值,我的第二个组合框查询就必须填充第二个组合框。见代码:
OracleConnection conn = new OracleConnection();
conn.ConnectionString = "User Id=christob;Password=CHRISTOB;Host=poseidon;Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0;Port=1522;Sid=GLODCD";
conn.Open();
string query1;
query1 = "select distinct dg.order_no from dc_delivery dd, dc_grv dg where delivery_complete_datetime is null and dd.dc_delivery_id_no = dg.dc_delivery_id_no and dd.delivery_announce_datetime is null and dd.delivery_bay_code = " + cbDelivery.Text;
OracleCommand cmd1 = new OracleCommand(query1, conn);
OracleDataReader dr1 = cmd1.ExecuteReader();
while (dr1.Read())
{
cbOderNo.Items.Add(dr1["order_no"]);
}
dr1.Close();
conn.Close();
请注意,我在第二个 Select 查询中使用了 cbDelivery 组合框。
问题是: 一旦我从我的第一个组合框中选择一个值,第二个组合框就会给出异常“”ORA-00904:“BAY1”:无效标识符。
请帮我解决这个问题或提出不同的方法。
提前致谢。
【问题讨论】:
-
您是否尝试使用 cbDelivery.SelectedValue 而不是 cbDelivery.Text。此外,您的 sql 查询周围缺少单引号。所以这一行:query1 = "select distinct dg.order_no from dc_delivery dd, dc_grv dg where delivery_complete_datetime is null and dd.dc_delivery_id_no = dg.dc_delivery_id_no and dd.delivery_announce_datetime is null and dd.delivery_bay_code = '" + cbDelivery.Text + "' ";
-
@AzharKhorasany cbDelivery.SelectedValue 不这样做。 “'”也不起作用。不要认为查询有问题。在我的其他人中也是如此。
-
在你的查询变量上放一个断点,看看你执行它时得到什么字符串。然后在 Oracle 数据库中运行该查询,看看是否可以得到任何结果?
-
@AzharKhorasany 是的,该查询在 Oracle 中有效。我在 OracleDataReader dr1 = cmd1.ExecuteReader(); -- ""ORA-00904: "BAY1": 标识符无效。
-
看看这个。您的查询一定有问题:dba-oracle.com/t_ora_00904_string_invalid_identifier.htm
标签: c# visual-studio combobox