来自sqlite

时间:2016-12-10 01:11:24

标签: java android sqlite

我想点击这个[按钮] [1]然后点击新活动ListNimNama.java

我有这段代码:

DbHelper.java

package id.co.pips.databasecrud;
import android.content.ContentValues;
import android.content.Context;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.util.ArrayList;

import id.co.pips.databasecrud.PDM.Mahasiswa;

public class DbHelper extends SQLiteOpenHelper {
    public static final String DATABASE_NAME = "database_mahasiswa.db";
    public static final int DATABASE_VERSION = 1;

    public static final String TABLE_MAHASISWA = "MAHASISWA";
    public static final String FIELD_MAHASISWA_NIM = "NIM";
    public static final String FIELD_MAHASISWA_NAMA = "NAMA";

    public DbHelper (Context c){
        super(c, DbHelper.DATABASE_NAME,null, DbHelper.DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL("CREATE TABLE " + DbHelper.TABLE_MAHASISWA
                +"(ID INTEGER PRIMARY KEY, "
                + DbHelper.FIELD_MAHASISWA_NIM + " VARCHAR(10),"
                + DbHelper.FIELD_MAHASISWA_NAMA + " VARCHAR(50));");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

    public int getJumlahBaris(){
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor crs = db.rawQuery("SELECT * FROM " + DbHelper.TABLE_MAHASISWA, null);
        int rowCount = crs.getCount();
        db.close();
        return rowCount;
    }

    public void insertMahasiswa(Mahasiswa m){
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues mahasiswaCV = new ContentValues();
        mahasiswaCV.put(DbHelper.FIELD_MAHASISWA_NAMA , m.getNama());
        mahasiswaCV.put(DbHelper.FIELD_MAHASISWA_NIM, m.getNim());

        db.insert(DbHelper.TABLE_MAHASISWA, null, mahasiswaCV);
        db.close();
    }

    public void insertMahasiswa2(Mahasiswa m){
        SQLiteDatabase db = this.getWritableDatabase();


        db.execSQL("INSERT INTO " + DbHelper.TABLE_MAHASISWA
                + " ( " + DbHelper.FIELD_MAHASISWA_NIM
                + ", " + DbHelper.FIELD_MAHASISWA_NAMA
                + ") VALUES ( ' "
                + m.getNama()
                + "', '"
                + m.getNim()
                + "' );");
        db.close();
    }

    public ArrayList<String> getAllNamaMahasiswa()
    {
        ArrayList listNamaMahasiswa = new ArrayList<String>();

        //populate array
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = db.query(TABLE_MAHASISWA, null, null, null, null, null, null);

        cursor.moveToFirst();
        while(!cursor.isAfterLast())
        {
            int indexNama = cursor.getColumnIndex(DbHelper.FIELD_MAHASISWA_NAMA);
            int indexNim = cursor.getColumnIndex(DbHelper.FIELD_MAHASISWA_NIM);
            String nama = cursor.getString(indexNama);
            String nim = cursor.getString(indexNim);

            listNamaMahasiswa.add(nama);

            cursor.moveToNext();
        }


        cursor.close();
        db.close();
        return listNamaMahasiswa;
    }

   public Cursor getAllNamaNimMahasiswa()
{
    //populate array
    SQLiteDatabase db = this.getReadableDatabase();


Cursor cursor = db.rawQuery("SELECT * FROM  " + TABLE_MAHASISWA, null);

    return cursor;
}
}

这里是我的ListNimNama.java

package id.co.pips.databasecrud;

import android.database.Cursor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;

import java.util.ArrayList;

import static id.co.pips.databasecrud.DbHelper.FIELD_MAHASISWA_NIM;

public class ListNimNama extends AppCompatActivity {
    ListView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_nim_nama);
        lv = (ListView)findViewById(R.id.listView);
        DbHelper db = new DbHelper(this);

        Cursor cursor = db.getAllNamaNimMahasiswa();

        String[] fromColumns =  {DbHelper.FIELD_MAHASISWA_NIM, DbHelper.FIELD_MAHASISWA_NAMA};

        int[] toViews = {R.id.namaItem, R.id.nimItem};
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.activity_list_nim_nama, cursor, fromColumns, toViews, 0);

        lv.setAdapter(adapter);

    }

}

这里是ListNimNama.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_list_nim_nama"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="id.co.pips.databasecrud.ListNimNama">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="Nama"/>


    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"

        android:id="@+id/namaItem"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"

        android:id="@+id/nimItem"/>

    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/listView"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>

我之前收到了消息:

  

java.lang.IllegalArgumentException:列'_id'不存在

在我将DbHelper公共Cursor getAllNamaNimMahasiswa()上的方法更改为:

public Cursor getAllNamaNimMahasiswa()
    {
        //populate array
        SQLiteDatabase db = this.getReadableDatabase();


    Cursor cursor = db.rawQuery("SELECT NIM as _id, NAMA, NIM FROM  " + TABLE_MAHASISWA, null);

        return cursor;
    }

项目成功运行但是,看起来像这样: Image 这是我的完整代码项目Dropbox

0 个答案:

没有答案