Android SQLite数据库错误
我正在尝试创建一个android应用程序,将sms备份到sqlite数据库。我在SQLiteOpenHelper类中创建数据库时遇到错误 以下是主活动中的代码Android SQLite数据库错误,android,android-sqlite,Android,Android Sqlite,我正在尝试创建一个android应用程序,将sms备份到sqlite数据库。我在SQLiteOpenHelper类中创建数据库时遇到错误 以下是主活动中的代码 public class MainActivity extends Activity { SimpleCursorAdapter adapter; private smsDatabase db1; @Override protected void onCreate(Bundle savedInstanc
public class MainActivity extends Activity {
SimpleCursorAdapter adapter;
private smsDatabase db1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void Backup(View view) {
Uri convo = Uri.parse("content://sms");
String[] reqCol = new String[] {"_id", "thread_id", "address", "person", "date", "body", "type"};
ContentResolver contentResolver = getContentResolver();
Cursor c = contentResolver.query(convo, null, null, null, "date asc");
SMSList<SMS> smsList = new SMSList<SMS>();
String count = Integer.toString(c.getCount());
Log.d("Count",count);
Context ctx = getApplicationContext();
db1 = new smsDatabase(ctx);
db1.open();
while (c.moveToNext()) {
SMS txt = new SMS();
long dateLong = c.getLong(c.getColumnIndex("date"));
Integer id1 = c.getInt(c.getColumnIndex("_id"));
String body = c.getString(c.getColumnIndex("body"));
Integer type1 = c.getInt(c.getColumnIndex("type"));
String address1 = c.getString(c.getColumnIndex("address"));
String read1 = c.getString(c.getColumnIndex("read"));
String seen1 = c.getString(c.getColumnIndex("seen"));
String subject1 = c.getString(c.getColumnIndex("subject"));
smsList.add(txt);
db1.insertSMS(txt);
}
}
下面是抛出的日志错误
java.lang.IllegalStateException: Could not execute method of the activity
at android.view.View$1.onClick(View.java:3591)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at android.view.View$1.onClick(View.java:3586)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalArgumentException: Version must be >= 1, was -994802
at android.database.sqlite.SQLiteOpenHelper.<init>(SQLiteOpenHelper.java:100)
at android.database.sqlite.SQLiteOpenHelper.<init>(SQLiteOpenHelper.java:78)
at com.swavey.testing.smsDatabase$DatabaseHelper.<init>(smsDatabase.java:115)
at com.swavey.testing.smsDatabase.<init>(smsDatabase.java:82)
at com.swavey.testing.MainActivity.Backup(MainActivity.java:44)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at android.view.View$1.onClick(View.java:3586)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
java.lang.IllegalStateException:无法执行活动的方法
在android.view.view$1.onClick上(view.java:3591)
在android.view.view.performClick上(view.java:4084)
在android.view.view$PerformClick.run(view.java:16966)
位于android.os.Handler.handleCallback(Handler.java:615)
位于android.os.Handler.dispatchMessage(Handler.java:92)
位于android.os.Looper.loop(Looper.java:137)
位于android.app.ActivityThread.main(ActivityThread.java:4745)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
在dalvik.system.NativeStart.main(本机方法)
原因:java.lang.reflect.InvocationTargetException
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:511)
在android.view.view$1.onClick上(view.java:3586)
在android.view.view.performClick上(view.java:4084)
在android.view.view$PerformClick.run(view.java:16966)
位于android.os.Handler.handleCallback(Handler.java:615)
位于android.os.Handler.dispatchMessage(Handler.java:92)
位于android.os.Looper.loop(Looper.java:137)
位于android.app.ActivityThread.main(ActivityThread.java:4745)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
在dalvik.system.NativeStart.main(本机方法)
原因:java.lang.IllegalArgumentException:版本必须大于等于1,was-994802
位于android.database.sqlite.SQLiteOpenHelper.(SQLiteOpenHelper.java:100)
位于android.database.sqlite.SQLiteOpenHelper.(SQLiteOpenHelper.java:78)
位于com.swavey.testing.smsDatabase$DatabaseHelper。(smsDatabase.java:115)
位于com.swavey.testing.smsDatabase(smsDatabase.java:82)
位于com.swavey.testing.MainActivity.Backup(MainActivity.java:44)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:511)
在android.view.view$1.onClick上(view.java:3586)
在android.view.view.performClick上(view.java:4084)
在android.view.view$PerformClick.run(view.java:16966)
位于android.os.Handler.handleCallback(Handler.java:615)
位于android.os.Handler.dispatchMessage(Handler.java:92)
位于android.os.Looper.loop(Looper.java:137)
位于android.app.ActivityThread.main(ActivityThread.java:4745)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
在dalvik.system.NativeStart.main(本机方法)
原因:java.lang.IllegalArgumentException:版本必须大于等于1,
was-994802
您的数据库版本应该是
静态int
,如1或2(等)。每当您发布应用程序更新且数据库结构因更新而发生更改时,您都可以在此版本号中添加一个,以触发运行onUpgrade
。它表示版本必须>=1。只需将代码替换为“publicstaticfinalintdatabase_VERSION=1”。希望对汉克斯有帮助!修复此问题并删除我的重复列似乎暂时可以修复它。它抛出更多的错误,但这似乎也是一个分配错误,我的错。一旦我有时间修复我的主要活动,以便正确分配短信,我会发表评论,让你知道一切是否正常。
java.lang.IllegalStateException: Could not execute method of the activity
at android.view.View$1.onClick(View.java:3591)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at android.view.View$1.onClick(View.java:3586)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalArgumentException: Version must be >= 1, was -994802
at android.database.sqlite.SQLiteOpenHelper.<init>(SQLiteOpenHelper.java:100)
at android.database.sqlite.SQLiteOpenHelper.<init>(SQLiteOpenHelper.java:78)
at com.swavey.testing.smsDatabase$DatabaseHelper.<init>(smsDatabase.java:115)
at com.swavey.testing.smsDatabase.<init>(smsDatabase.java:82)
at com.swavey.testing.MainActivity.Backup(MainActivity.java:44)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at android.view.View$1.onClick(View.java:3586)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
public static final int DATABASE_VERSION = (int) new Date().getTime()/1000;