Когда я пробую что-то вроде этого
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"};
Не получилось.
ilosc
может не возвращаться как aType.Int32
(который является int). Это может быть возвращаемое значениеDbType
(илиOracleDbType
или какая-либо база данных)enum
, какDbType.Int32
илиOracleDbType.Decimal
. Явное преобразование не всегда хорошо работает с этими типами данных. Чтобы обойти это, я часто использую.ToString()
метод поля результата, а затем использую.Parse
or.TryParse
в качестве способа приведения:MySQL count (*) возвращает BIGINT (long C# type).
https://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html#function_count
Попробуйте кастинг долго: