【发布时间】:2022-01-08 21:46:04
【问题描述】:
在我的项目中,我想从 oracle 数据库中获取一些数据。
在oracle数据库中,表和视图是分开的。
所以我已经连接到数据库并尝试从视图中收集数据。
所以我写了这段代码来获取数据。但是,我在 dt.Load(dr) 行中返回一个错误,异常说 Specified Cast is not valid
谁能解释一下这个错误的含义以及如何避免这种情况?
这是我第一次使用 Oracle db。
OracleConnection con = new OracleConnection("Data Source=TEST;Persist Security Info=True;UserID=app;Password=test;");
con.Open();
OracleCommand cmd = con.CreateCommand();
cmd.CommandText = "SELECT * FROM P.INVENTORY_PART_IN_STOCK_UIV WHERE PART_NO = '90202-KPL-900D' and upper(P.Sales_Part_API.Get_Catalog_Group(CONTRACT, PART_NO) ) = upper('SPMB')";
cmd.CommandType = CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
dataGridView1.DataSource = dt.DefaultView;
【问题讨论】:
-
查询返回哪些列类型?
-
@CaiusJard 字符串、整数、浮点数、日期时间
-
@CaiusJard 我意识到了这个问题。我试过选择一列。然后它返回数据。我认为问题来了,我从表中选择了 * 数据。
-
听起来其中一列是数据表不支持的某种类型,例如地理、xml、blob。我会尝试查看所有不同的数据类型,然后从每个数据类型中选择一列其中,例如
select someVarcharselect somedatetime,select someint.. 它可能会更快地缩小范围 - 从不寻常的开始(因为支持 varchar、datetime、int 等是非常标准的).. 这就是为什么我要求一个所有列类型的列表,因此我们可以猜测奇怪的列类型。您可以从中获取查询,CREATE VIEW tempview AS,然后描述视图并发布列表..