При подключении к базе данных SQLlite на устройстве у меня возникает странная проблема в monotouch. Код работал нормально в течение нескольких недель, и только недавно он перестал работать, но я не внес никаких изменений в код SQL. Плюс он отлично работает в симуляторе, но не на реальном устройстве.
В пятницу я столкнулся с этой проблемой при возврате своих результатов и заполнении таблицы данных
a.Fill(d);
когда код достиг строки, заполняющей таблицу данных, приложение зависало на устройстве, но не в симуляторе. Но теперь я получаю сбой приложения при открытии соединения с базой данных с помощью
(SqliteConnection conn = new SqliteConnection(connectionstring))
Может кто-нибудь предложить что-нибудь, что я мог бы попробовать?
var documents = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
string db = Path.Combine (documents, "SwipeITLocal");
string connectionstring = "Data Source= " + db;
using (SqliteConnection conn = new SqliteConnection(connectionstring))
{
conn.Open();
using (SqliteCommand cmd = new SqliteCommand("Select * from Vouchercaptureddata order by timecaptured desc",conn))
{
cmd.CommandType = CommandType.Text;
DataTable d = new DataTable();
SqliteDataAdapter a = new SqliteDataAdapter(cmd);
a.Fill(d);
cmd.ExecuteNonQuery();
Console.WriteLine("Voucher Data Loaded");
return d;
}
}
Это то, что я получаю из вывода при сбое приложения на устройстве
StackTrace:
в MonoTouch.UIKit.UIApplication.Main (строка [], строка, строка) <0x0010f>
в MonoTouch.UIKit.UIApplication.Main (string []) <0x00023>
в MTBarcodeExample.Application.Main (string []) [0x00000] в /Users/galacoral/Projects/MTBarcodeExample-2/MTBarcodeExample/Main.cs:18
at (обертка runtime-invoke) object.runtime_invoke_dynamic (intptr, intptr, intptr, intptr) <0xffffffff>
Собственная трассировка стека:
0 MTBarcodeExample 0x0061b9e0 mono_handle_native_sigsegv + 412
1 MTBarcodeExample 0x005f4d04 mono_sigsegv_signal_handler + 360
2 libsystem_c.dylib 0x36b4572f _sigtramp + 42
3 MTBarcodeExample 0x001dfa4c Mono_Data_Sqlite_SqliteConnection__ctor_string + 40
Отладочная информация из GDB:
=============================================== ==================
Получил SIGSEGV при выполнении нативного кода. Это обычно указывает
фатальная ошибка в моно среде выполнения или в одной из собственных библиотек
используется вашим приложением.