android - 如何从 Android 中的 SQLite 中获取记录

标签 android android-listview android-sqlite

我不擅长Android,学习东西。我正在尝试从 Android 中的 SQLite 获取记录。这是我的代码。请帮助我的错在哪里。谢谢。

    //DatabaseAdapter.java// 

    package com.example.wg_an;
    import java.util.ArrayList;
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;

    public class DatabaseAdapter {
        SQLiteDatabase database;
        DatabaseOpenHelper dbHelper;

        public DatabaseAdapter(Context context) {
            dbHelper = new DatabaseOpenHelper(context);

        }

        public void open() {
            database = dbHelper.getWritableDatabase();
        }

        public void close() {
            database.close();
        }

        public long insertTest(String no, String name) {
            ContentValues values = new ContentValues();
            values.put("no", no);
            values.put("name", name);

            return database.insert("test", null, values);
        }

        public ArrayList<String> getAllLabels() {

            Cursor mcursor = database.rawQuery("SELECT name FROM "
                    + DatabaseOpenHelper.TABLE_NAME, null);

            ArrayList<String> result = new ArrayList<String>();

            do {
                result.add(mcursor.getString(mcursor.getColumnIndex("name")));
            } while (mcursor.moveToNext());

            return result;
        }

    }



    //MainActivity2.java//

    package com.example.wg_an;

    import java.util.ArrayList;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ListView;
    import android.widget.Toast;

    public class MainActivity2 extends Activity implements OnClickListener {
        EditText etno, etname;
        Button btnSave;
        DatabaseAdapter dbAdapter;

        public void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);

            dbAdapter = new DatabaseAdapter(getApplicationContext());

            etno = (EditText) findViewById(R.id.txtNo);
            etname = (EditText) findViewById(R.id.txtName);
            btnSave = (Button) findViewById(R.id.Save);
            btnSave.setOnClickListener(this);

            Button back = (Button) findViewById(R.id.buttonBackPg);
            back.setOnClickListener(this);

            Button view_list = (Button) findViewById(R.id.view_list);
            view_list.setOnClickListener(this);

        }

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if (v.getId() == R.id.buttonBackPg) {
                startActivity(new Intent(getApplicationContext(),
                        MainActivity.class));
            }

            if (v.getId() == R.id.view_list) {

                ListView listview = (ListView) findViewById(R.id.list_all);
                ArrayList<String> data = dbAdapter.getAllLabels();
                dbAdapter.close();
                listview.setAdapter(new ArrayAdapter<String>(this,
                        android.R.layout.simple_list_item_1, data));

            }

            if (v.getId() == R.id.Save) {

                String no = etno.getText().toString();
                String name = etname.getText().toString();
                dbAdapter.open();
                long inserted = dbAdapter.insertTest(no, name);

                if (inserted >= 0) {
                    Toast.makeText(getApplicationContext(), "data saved",
                            Toast.LENGTH_LONG).show();

                    etno.setText("");
                    etname.setText("");

                } else {
                    Toast.makeText(getApplicationContext(), "data not saved",
                            Toast.LENGTH_LONG).show();
                }
                dbAdapter.close();
            }
        }
    }



    //activity_main2.xml//

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        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=".MainActivity2" >

        <EditText
            android:id="@+id/txtNo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView1"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="19dp"
            android:ems="10"
            android:hint="No"
            android:inputType="text" >

            <requestFocus />
        </EditText>

        <Button
            android:id="@+id/buttonBackPg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/Save"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="77dp"
            android:text="Back" />

        <Button
            android:id="@+id/Save"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/buttonBackPg"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="32dp"
            android:onClick="onClick"
            android:text="Save" />

        <EditText
            android:id="@+id/txtName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignRight="@+id/textView1"
            android:layout_below="@+id/txtNo"
            android:layout_marginTop="36dp"
            android:ems="10"
            android:hint="Name"
            android:inputType="text">

        </EditText>

        <Button
            android:id="@+id/view_list"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/txtName"
            android:layout_below="@+id/Save"
            android:text="View List" />

        <ListView
            android:id="@+id/list_all"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/msg"
            android:layout_alignLeft="@+id/msg" >
        </ListView>

    </RelativeLayout>

最佳答案

试试这个编辑

public ArrayList<String> getAllLabels() {

    Cursor mcursor = database.rawQuery("SELECT name FROM "
        + DatabaseOpenHelper.TABLE_NAME, null);

    ArrayList<String> result = new ArrayList<String>();

    if(mcursor!=null)
    {

        //move cursor to first result record
        mcursor.moveToFirst();

        do {
            result.add(mcursor.getString(mcursor.getColumnIndex("name")));
        } while (mcursor.moveToNext());
    }
    return result;
}

关于android - 如何从 Android 中的 SQLite 中获取记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16527443/

相关文章:

android - 在不重新加载的情况下将项目添加到 ListView

java - SQLite 查询不适用于连接字符串

android - 测试修改后的 Android 源代码的最快方法?

java - 将 json 数据发送到 db 并在 listview 中显示抛出 "null pointer exception"

java - Android 为简单的自定义类使用依赖注入(inject)

Android Sqlite order by desc 无法正常工作

android - 未调用 SQLite onUpgrade

android - 从数组中获取字符串

android - 在 ListFragment 中创建 RSS 提要

android - 当我旋转屏幕时出现奇怪的错误,viewpager 内的 ListView 将消失