Android SQLite存在问题,如何显示数据

时间:2014-04-11 16:12:50

标签: java android sqlite

大家好,我目前正在通过各种在线教程在Eclipse上创建Android应用程序。我已经创建了一个SQLite数据库并能够手动输入信息 - 尽管我还不确定如何删除这些信息。我想要的是用户点击一个按钮,然后它将显示他们在个人资料页面上输入的信息 - 此时它只有两个字段。我花了几个小时进行各种教程和研究,似乎无法让它发挥作用。如果有人有时间浏览我的代码并告诉我如何通过按钮调用方法来添加新数据,那么将非常感激。我想我正在失去理智。我也明白,我可能没有绕过正确的设置方法,但我还在学习。

这是我的DatabaseHandler.java文件

    package com.example.myapp;

    import java.util.ArrayList;
    import java.util.List;

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

    public class DatabaseHandler extends SQLiteOpenHelper {

// All Static variables
// Database Version
private static final int DATABASE_VERSION = 1;

// Database Name
private static final String DATABASE_NAME = "contactsManager";

// Contacts table name
private static final String TABLE_CONTACTS = "contacts";

// Contacts Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_EMAIL = "email";

public DatabaseHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
            + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
            + KEY_EMAIL + " TEXT" + ")";
    db.execSQL(CREATE_CONTACTS_TABLE);
}

// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // Drop older table if existed
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);

    // Create tables again
    onCreate(db);
}

/**
 * All CRUD(Create, Read, Update, Delete) Operations
 */

// Adding new contact
void addContact(Contact contact) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_NAME, contact.getName()); // Contact Name
    values.put(KEY_EMAIL, contact.getEmail()); // Contact Phone

    // Inserting Row
    db.insert(TABLE_CONTACTS, null, values);
    db.close(); // Closing database connection
}

// Getting single contact
Contact getContact(int id) {
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
            KEY_NAME, KEY_EMAIL }, KEY_ID + "=?",
            new String[] { String.valueOf(id) }, null, null, null,      null);
    if (cursor != null)
        cursor.moveToFirst();

    Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
            cursor.getString(1), cursor.getString(2));
    // return contact
    return contact;
}

// Getting All Contacts
public List<Contact> getAllContacts() {
    List<Contact> contactList = new ArrayList<Contact>();
    // Select All Query
    String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            Contact contact = new Contact();
            contact.setID(Integer.parseInt(cursor.getString(0)));
            contact.setName(cursor.getString(1));
            contact.setEmail(cursor.getString(2));
            // Adding contact to list
            contactList.add(contact);
        } while (cursor.moveToNext());
    }

    // return contact list
    return contactList;
}

// Updating single contact
public int updateContact(Contact contact) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_NAME, contact.getName());
    values.put(KEY_EMAIL, contact.getEmail());

    // updating row
    return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
            new String[] { String.valueOf(contact.getID()) });
}

// Deleting single contact
public void deleteContact(Contact contact) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_CONTACTS, KEY_ID + " = ?",
            new String[] { String.valueOf(contact.getID()) });
    db.close();
}

// Getting contacts Count
public int getContactsCount() {
    String countQuery = "SELECT  * FROM " + TABLE_CONTACTS;
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(countQuery, null);
    cursor.close();

    // return count
    return cursor.getCount();
}

    }

以下是我的页面,到目前为止,您只会将强制信息发送到数据库,如您所见。

    package com.example.myapp;

    import java.util.ArrayList;
    import java.util.List;

    import android.app.Activity;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.TextView;

    public class Addrecord extends Activity {
    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    DatabaseHandler db = new DatabaseHandler(this);

    /**
     * CRUD Operations
     * */
    // Inserting Contacts
    Log.d("Insert: ", "Inserting ..");
    db.addContact(new Contact("Dan", "dljbrown@icloud.com"));
    db.addContact(new Contact("Pash", "pashj@hotmail.com"));
    db.addContact(new Contact("Nigel", "Dancinboyforever@hotmail.com"));
    db.addContact(new Contact("Jit", "Jit@hotmail.com"));

    // Log.d("Delete: ", "Deleting..");

    // db.deleteContact(new Contact("Dan", "dljbrown@icloud.com"));
    // db.deleteContact(new Contact("Pash", "pashj@hotmail.com"));
    // db.deleteContact(new Contact("Nigel",
    // "Dancinboyforever@hotmail.com"));
    // db.deleteContact(new Contact("Jit", "dljbrown@icloud.com"));

    // Reading all contacts
    Log.d("Reading: ", "Reading all contacts..");
    List<Contact> contacts = db.getAllContacts();

    for (Contact cn : contacts) {
        String log = "Id: " + cn.getID() + " ,Name: " + cn.getName()
                + " ,Email: " + cn.getEmail();
        // Writing Contacts to log
        Log.d("Name: ", log);
    }

}
    }

因此,不是将信息直接传递到数据库并显示在日志中,如下所示,我希望用户按下上一页的按钮,我将显示他们的信息。

谢谢,如果有人回复!

以下是我目前链接到&#34; Addrecord&#34;活动,一次&#34; Page1&#34;在列表视图中已单击,然后我希望它显示用户信息(此时的示例信息)

    package com.example.myapp;
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.ListView;

    public class Home extends Activity {

Button button;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    populateListView();
    registerClickCallback();

}

public void populateListView() {

    String[] homelist = { "Page1", "Page2", "Page3", "Page4", "Page5" };

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            R.layout.list_home, homelist);

    ListView list = (ListView) findViewById(R.id.testhomelist);
    list.setAdapter(adapter);

}

public void registerClickCallback() {
    ListView list = (ListView) findViewById(R.id.testhomelist);
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        // NOW COPY AND PASTE FOR ALL THE OTHERS
        @Override
        public void onItemClick(AdapterView<?> parent, View viewClicked,
                int position, long id) {
            if (position == 0) {
                Intent myintent = new Intent(getApplicationContext(),
                        Addrecord.class);
                startActivity(myintent);
            }

            if (position == 1) {
                Intent myintent2 = new Intent(getApplicationContext(),
                        Pagetwo.class);
                startActivity(myintent2);
            }

            if (position == 2) {
                Intent myintent3 = new Intent(getApplicationContext(),
                        Pagethree.class);
                startActivity(myintent3);
            }

            if (position == 3) {
                Intent myintent4 = new Intent(getApplicationContext(),
                        Pagefour.class);
                startActivity(myintent4);
            }

            if (position == 4) {
                Intent myintent5 = new Intent(getApplicationContext(),
                        Pagefive.class);
                startActivity(myintent5);
            }

            if (position == 5) {
                Intent myintent6 = new    Intent(getApplicationContext(),
                        Pagesix.class);
                startActivity(myintent6);
            }

        }

    });
    } 

0 个答案:

没有答案