当连接到设备上的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;
}
}
这是应用程序在设备上崩溃时从输出中获得的内容
堆栈跟踪:
at MonoTouch.UIKit.UIApplication.Main(string [],string,string)< 0x0010f> 在MonoTouch.UIKit.UIApplication.Main(string [])< 0x00023> 在/Users/galacoral/Projects/MTBarcodeExample-2/MTBarcodeExample/Main.cs:18中的MTBarcodeExample.Application.Main(string [])[0x00000] at(wrapper 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。这通常表明 单声道运行时或其中一个本机库中的致命错误