当我尝试这样的事情时
DataTable wynikIlosc=API.exported.Database.executeQueryWithResult("select count(*) as ilosc from Przedmioty limit 1");
przedmioty= new object[(int)wynikIlosc.Rows[0]["ilosc"]];
我收到此错误:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidCastException: Specified cast is not valid.
当我使用这个
时przedmioty= new object[20];
它有效。 对象数组中的新对象数组也是如此。
przedmioty[0]=new object[6] {"test",1,1337,1,1,"test"};
工作但是
int i=0;
przedmioty[i]=new object[6] {"test",1,1337,1,1,"test"};
没用。
答案 0 :(得分:0)
ilosc
可能不会以Type.Int32
(这是一个int)的形式返回。它可以作为DbType
(或OracleDbType
或任何数据库)enum
值返回,例如DbType.Int32
或OracleDbType.Decimal
。在处理这些数据类型时,显式转换并不总是很好。为了解决这个问题,我经常使用结果字段的.ToString()
方法,然后使用.Parse
或.TryParse
作为投射方式:
double.Parse(field[0][i].ToString());
答案 1 :(得分:0)
MySQL count(*)返回BIGINT(长C#类型)。
https://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html#function_count
尝试施展为长:
DataTable table = new DataTable();
table.Columns.Add(new DataColumn { ColumnName = "ilosc", DataType = typeof(long) });
table.Rows.Add(table.NewRow());
table.Rows[0]["ilosc"] = 3;
var test2 = new object[(long)table.Rows[0]["ilosc"]];