如何在数据库中使用Recyclerview来纠正这个错误

时间:2016-06-28 03:30:33

标签: java android sqlite android-recyclerview

当我试图在卡片视图中显示联系人时,我点击按钮它显示致命异常错误它不显示cardview任何人都可以用brillliance解决这个编程而另一个错误是当我再次点击时它只显示一个cardview应用程序将被打击?

Showcontacts.java

public class ShowContacts extends Activity
{
private SQLiteDatabase db;
DbOperations doo;
private List<Contacts> contactsList;
private RecyclerView rv;
private Cursor c;
String names,email,address;
int phone;
String read_query = "select * from"+ ContactsTask.ContactsEntry.TABLE_NAME;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.recycle_layout);
    doo = new DbOperations(this);
           openDatabase();
    rv = (RecyclerView)findViewById(R.id.recyclerview);
    initializeData();
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    rv.setLayoutManager(linearLayoutManager);
    rv.setHasFixedSize(true);
    ContactAdapter cc = new ContactAdapter(contactsList);
    rv.setAdapter(cc);
}
public  void initializeData() {
    contactsList = new ArrayList<>();

    c = db.rawQuery(read_query,null);
    c.moveToFirst();
    while (!c.isLast())
    {
        names = c.getString(0);
        phone = c.getInt(1);
        email = c.getString(2);
        address = c.getString(3);
        contactsList.add(new Contacts(names,phone,email,address));
    }
    c.isLast();
    names = c.getString(0);
    phone = c.getInt(1);
    email = c.getString(2);
    address = c.getString(3);
    contactsList.add(new Contacts(names,phone,email,address));
}
private void openDatabase() {
    db = openOrCreateDatabase("contactDB", Context.MODE_PRIVATE,null);
}

}

Logacat错误

  06-28 08:57:43.107 568-568/com.example.anilkumar.contactstask     E/AndroidRuntime: FATAL EXCEPTION: main
                                                                            java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.anilkumar.contactstask/com.example.anilkumar.contactstask.ShowContacts}: android.database.sqlite.SQLiteException: near "fromcontacts": syntax error: , while compiling: select * fromcontacts
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
                                                                                at android.app.ActivityThread.access$600(ActivityThread.java:123)
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                at android.os.Looper.loop(Looper.java:137)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:4424)
                                                                                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:784)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
                                                                                at dalvik.system.NativeStart.main(Native Method)
                                                                             Caused by: android.database.sqlite.SQLiteException: near "fromcontacts": syntax error: , while compiling: select * fromcontacts
                                                                                at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
                                                                                at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:68)
                                                                                at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143)
                                                                                at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361)
                                                                                at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:127)
                                                                                at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:94)
                                                                                at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:53)
                                                                                at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
                                                                                at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1564)
                                                                                at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1538)
                                                                                at com.example.anilkumar.contactstask.ShowContacts.initializeData(ShowContacts.java:44)
                                                                                at com.example.anilkumar.contactstask.ShowContacts.onCreate(ShowContacts.java:34)
                                                                                at android.app.Activity.performCreate(Activity.java:4466)
                                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
                                                                                at android.app.ActivityThread.access$600(ActivityThread.java:123) 
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
                                                                                at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                                                at android.os.Looper.loop(Looper.java:137) 
                                                                                at android.app.ActivityThread.main(ActivityThread.java:4424) 
                                                                                at java.lang.reflect.Method.invokeNative(Native Method) 

另一个logact错误

  06-28 13:14:40.552 11252-11261/com.example.anilkumar.contactstask E/SQLiteDatabase: close() was never explicitly called on database '/data/data/com.example.anilkumar.contactstask/databases/contactDB' 
                                                                                android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
                                                                                    at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943)
                                                                                    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007)
                                                                                    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
                                                                                    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:962)
                                                                                    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1043)
                                                                                    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1036)
                                                                                    at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:761)
                                                                                    at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:215)
                                                                                    at com.example.anilkumar.contactstask.ShowContacts.openDatabase(ShowContacts.java:66)
                                                                                    at com.example.anilkumar.contactstask.ShowContacts.onCreate(ShowContacts.java:33)
                                                                                    at android.app.Activity.performCreate(Activity.java:4466)
                                                                                    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
                                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
                                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
                                                                                    at android.app.ActivityThread.access$600(ActivityThread.java:123)
                                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                    at android.os.Looper.loop(Looper.java:137)
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:4424)
                                                                                    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:784)
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)

1 个答案:

答案 0 :(得分:1)

只需更新

String read_query = "select * from"+ ContactsTask.ContactsEntry.TABLE_NAME;

String read_query = "select * from  "+ ContactsTask.ContactsEntry.TABLE_NAME;

始终关闭光标。更新你的initializeData方法

public  void initializeData() {


    try {
    contactsList = new ArrayList<>();
    try{
    c = db.rawQuery(read_query,null);
    c.moveToFirst();
    while (!c.isLast())
    {
        names = c.getString(0);
        phone = c.getInt(1);
        email = c.getString(2);
        address = c.getString(3);
        contactsList.add(new Contacts(names,phone,email,address));
    }
    c.isLast();
    names = c.getString(0);
    phone = c.getInt(1);
    email = c.getString(2);
    address = c.getString(3);
    contactsList.add(new Contacts(names,phone,email,address));
} catch (Exception e) {
   // exception handling
} finally {
   if(c != null){
       c.close();
   }
} 


}
相关问题