问题:
我正在使用Oracle access client连接到Oracle数据库。当从一个表中选择一个值时,我会得到一个结果;当改变这个表时,我会得到一个空值。
背景:
在我的SQLDeveloper客户端中,我可以连接到数据库并运行以下查询:
SELECT MSIB.SEGMENT1
FROM APPS.MTL_SYSTEM_ITEMS_B MSIB
WHERE MSIB.ORGANIZATION_ID = 255 AND MSIB.SEGMENT1 = '03F.211';
-- 1 ROW RETURNED - VALUE OF 03F.211
SELECT MC.SEGMENT1
FROM APPS.MTL_CATEGORIES_VL MC
WHERE MC.SEGMENT1 = 'A0042I';
-- 1 ROW RETURNED - VALUE OF A0042I
然后,在C#中,我使用完全相同的凭据连接到数据库(所以这不应该是数据库权限问题)。
运行这段代码,我得到一个消息框,返回我所期望的: 03F.211
OracleConnection oradbcon = new OracleConnection(strOracleConString);
oradbcon.Open();
strQuery = "SELECT MSIB.SEGMENT1 FROM APPS.MTL_SYSTEM_ITEMS_B MSIB WHERE MSIB.ORGANIZATION_ID = 255 AND MSIB.SEGMENT1 = " + ":ITEM_CODE";
// strQuery = "SELECT MC.SEGMENT1 FROM APPS.MTL_CATEGORIES_VL MC WHERE MC.SEGMENT1 = " + ":ITEM_CODE";
OracleCommand oradbcmd = new OracleCommand(strQuery, oradbcon);
oradbcmd.CommandType = CommandType.Text;
OracleParameter p_item_code = new OracleParameter();
p_item_code.OracleDbType = OracleDbType.Varchar2;
p_item_code.Value = "03F.211";
// p_item_code.Value = "A0042I";
oradbcmd.Parameters.Add(p_item_code);
OracleDataReader oradbdr = oradbcmd.ExecuteReader();
oradbdr.Read();
strProductMinor = oradbdr.GetString(0).ToString();
MessageBox.Show(strProductMinor);
但是在切换了这些注释行的情况下运行代码时,我得到了一个错误,指出数据库为空:
OracleConnection oradbcon = new OracleConnection(strOracleConString);
oradbcon.Open();
// strQuery = "SELECT MSIB.SEGMENT1 FROM APPS.MTL_SYSTEM_ITEMS_B MSIB WHERE MSIB.ORGANIZATION_ID = 255 AND MSIB.SEGMENT1 = " + ":ITEM_CODE";
strQuery = "SELECT MC.SEGMENT1 FROM APPS.MTL_CATEGORIES_VL MC WHERE MC.SEGMENT1 = " + ":ITEM_CODE";
OracleCommand oradbcmd = new OracleCommand(strQuery, oradbcon);
oradbcmd.CommandType = CommandType.Text;
OracleParameter p_item_code = new OracleParameter();
p_item_code.OracleDbType = OracleDbType.Varchar2;
// p_item_code.Value = "03F.211";
p_item_code.Value = "A0042I";
oradbcmd.Parameters.Add(p_item_code);
OracleDataReader oradbdr = oradbcmd.ExecuteReader();
oradbdr.Read();
strProductMinor = oradbdr.GetString(0).ToString();
MessageBox.Show(strProductMinor);
什么会导致一个查询返回结果而另一个查询不返回结果?
(最后-如果上面有什么是丑陋的,请原谅我对C#的无知。多年的甲骨文经验-第一个C#程序...:)
https://stackoverflow.com/questions/55170225
复制相似问题