Мне не удалось найти ответ, который помог мне, так что здесь мы идем,C# Sqlite InvalidCastException
Я это функция, которая делает команду для моего SQLiteDataAdapter, Сейчас он работает все хорошо в моей программе, которая использует FireBird, к сожалению, теперь я работаю над мобильным фреймворком, и он, похоже, не работает здесь.
public DataTable Get(string tableName, string[] selectColumns, string[] conditionColumns,
object[] conditionValues)
{
if (conditionColumns.Length != conditionValues.Length)
{
throw new Exception("Length of columns and values is different");
}
DataTable dt = new DataTable();
StringBuilder stringB = new StringBuilder();
try
{
stringB.Append("SELECT ");
if (selectColumns == null)
{
stringB.Append("* ");
}
else
{
for (int i = 0; i < selectColumns.Length; i++)
{
stringB.Append(selectColumns[i]);
if (i == selectColumns.Length - 1)
{
stringB.Append(" ");
}
else
{
stringB.Append(", ");
}
}
}
stringB.Append("FROM ");
stringB.Append(tableName + " ");
stringB.Append("WHERE (");
for (int i = 0; i < conditionColumns.Length; i++)
{
stringB.Append(conditionColumns[i] + " = @" + conditionColumns[i]);
if (i < (conditionColumns.Length - 1))
{
stringB.Append(" AND ");
}
else
{
stringB.Append(")");
}
}
SQLiteDataAdapter da = new SQLiteDataAdapter(stringB.ToString(), connection);
for (int i = 0; i < conditionColumns.Length; i++)
{
da.SelectCommand.Parameters.Add("@" + conditionColumns[i], (DbType)conditionValues[i]);
}
da.Fill(dt);
return dt;
}
catch (Exception e)
{
throw new Exception("Database error :\r\n" + stringB + "\r\n" + e.Message, e);
}
}
Теперь это я моя функция, ошибка выкинут на
da.SelectCommand.Parameters.Add("@" + conditionColumns[i], (DbType)conditionValues[i]);
с ошибкой
Ошибка базы данных: SELECT * FROM ЖИВОТНЫХ WHERE (animal_number = @animal_number) InvalidCastException
Я не уверен, что сейчас валю, я бросаю DbType, так как его единственный тип, который он, похоже, принимает, но все же выдает ошибку.
Кажется, закрепилась это, спасибо –
Так быстрый вопрос, что АЛС делать с забросов, я пытаюсь вытащить элемент из моего SQLite базы данных, как этот animal.FeedScheduleType = (BcFeedScheduleType) drAnimal [ «feedschedule_type» ]; Где BcFeedScheduleType является общедоступным enum, теперь он бросает мне InvalidCastException, у вас есть идея, почему? или как это исправить? –
Попробуйте что-то вроде animal.FeedScheduleType = (BcFeedScheduleType) Convert.ToInt32 (drAnimal ["feedschedule_type"]); –