2013-11-22 6 views
0

ОК, ребята. я действительно застрял в этой программе -_-! когда я запускаю программу, появляется так много ошибок. Heres: вся LogCat:Невозможно запустить Activity ComponentInfo {com.databasesqlite/com.databasesqlite.MainActivity}

1. java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sqlitetolistview/com.sqlitetolistview.MainActivity}: android.database.sqlite.SQLiteException: no such table: db (code 1): , while compiling: SELECT nama, alamat, _id FROM db 
2. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
3. at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
4. at android.app.ActivityThread.access$600(ActivityThread.java:141) 
5. at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
6. at android.os.Handler.dispatchMessage(Handler.java:99) 
7. at android.os.Looper.loop(Looper.java:137) 
8. at android.app.ActivityThread.main(ActivityThread.java:5041) 
9. at java.lang.reflect.Method.invokeNative(Native Method) 
10.  at java.lang.reflect.Method.invoke(Method.java:511) 
11.  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
12.  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
13.  at dalvik.system.NativeStart.main(Native Method) 
14. Caused by: android.database.sqlite.SQLiteException: no such table: db (code 1): , while compiling: SELECT nama, alamat, _id FROM db 
15.  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
16.  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882) 
17.  at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493) 
18.  at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
19.  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
20.  at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37) 
21.  at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) 
22.  at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314) 
23.  at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1161) 
24.  at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1032) 
24.  at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1200) 
26.  at com.sqlitetolistview.MainActivity.muat_ulang(MainActivity.java:33) 
27.  at com.sqlitetolistview.MainActivity.onCreate(MainActivity.java:26) 
28.  at android.app.Activity.performCreate(Activity.java:5104) 
29.  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
30.  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 

У меня есть MainActivity.java вроде этого:

package com.sqlitetolistview; 

import android.app.ListActivity; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.provider.BaseColumns; 
import android.support.v4.widget.CursorAdapter; 
import android.support.v4.widget.SimpleCursorAdapter; 
import android.widget.ListView; 

public class MainActivity extends ListActivity { 

    private SQLiteDatabase db; 
    private CursorAdapter data_sumber; 
    private static final String kolom[] = {"nama", "alamat",BaseColumns._ID }; 
    DBHelper helper = new DBHelper(this); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ListView view = getListView(); 
     view.addHeaderView(getLayoutInflater().inflate(R.layout.activity_main, null)); 
     db = helper.getWritableDatabase(); 

     this.muat_ulang(); 
     this.tambahdata(); 
    } 

    @SuppressWarnings("deprecation") 
    public void muat_ulang() 
    { 
     Cursor data = db.query("db", kolom, null, null, null, null,null); 
     data_sumber = new SimpleCursorAdapter(this, R.layout.activity_main, data, kolom,new int[] { R.id.nama, R.id.alamat }); 
     setListAdapter(data_sumber); 
    } 

    public void tambahdata() 
    { 
     helper.tambah(db); 
     this.muat_ulang(); 
} 
} 

и XML:

 <?xml version="1.0" encoding="utf-8"?> 
     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_height="wrap_content" 
     android:id="@+id/layoutBaris" 
     android:orientation="horizontal" 
     android:layout_width="fill_parent"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:id="@+id/nama" 
     android:text="Nama" 
     android:textSize="15sp" 
     android:padding="10dip" /> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_height="wrap_content" 
     android:id="@+id/alamat" 
     android:text="Alamat" 
     android:gravity="right" 
     android:textSize="15sp" 
     android:padding="10dip" /> 

</RelativeLayout> 

и здесь DBHelper.java:

package com.sqlitetolistview; 

    import java.util.Random; 

    import android.content.Context; 
    import android.database.sqlite.SQLiteDatabase; 
    import android.database.sqlite.SQLiteOpenHelper; 

    public class DBHelper extends SQLiteOpenHelper { 
    public DBHelper(Context context) { 
     super(context, "db", null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     //db.execSQL(""); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     //db.execSQL(""); 
     onCreate(db); 
    } 

    public void tambah(SQLiteDatabase db) { 
     String[] nama_sis = new String[] { "Gede", "Okky", "Untung", "Puji", "Willy", "Ayus" }; 
     String[] alamat_sis = new String[] { "Denpasar", "Banyuwangi", "Situbondo", "Rogojampi", "Purwoharjo", "Rogojampi" }; 
     int lanjut = new Random().nextInt(6); 
     String nama_in = nama_sis[lanjut]; 
     String alamat_in = alamat_sis[lanjut]; 
     //db.execSQL(""); 
    } 
} 

, пожалуйста, помогите мне исправить ошибку :) спасибо

+0

Вы должны опубликовать весь LogCat – Egor

+0

Вы можете разместить DBHelper класс также? Пожалуйста, убедитесь, что вы создали таблицу с именем «db» в переопределенном методе 'onCreate (SQLiteDatabase db)' 'SQLiteOpenHelper' класс –

+0

@Egor i alredy опубликовать весь logcat – kimyr

ответ

1

Как было предложено, поставив комментарий в качестве ответа, @kimyr Если посмотреть на методе OnCreate в вашем DBHelper классе нет ни одного заявления, которое создает таблицу с именем дб. Похоже, это главная причина. Вставить таблицу создать заявление следующим образом в onCreate method,

db.execSQL("create table table1 (" + "_id integer primary key auto increment)"); 

пардон за синтаксической ошибки, если таковые имеются. Пожалуйста, обратитесь к this link для получения более подробной информации

+0

ладно парни :) спасибо ~ – kimyr

0

Вы забыли написать создать таблицу запрос в OnCreate()

Я думаю, что вы должны обратиться this link для Sqlite

Смежные вопросы