android getWritableDatabase

时间:2015-02-24 17:14:21

标签: java android

package ru.phonebook;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.SyncStateContract;
import android.util.Log;

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

// Класс для работы БД
public class DatabaseHandler extends SQLiteOpenHelper
{
    // Версия базы данных
    private static final int _DatabaseVersion = 3;

    // Название базы
    private static final String _DatabaseName = "ContaсtDatabase";

    // Таблица
    private static final String _TableName = "subscribers";

    // Поля в таблице
    private static final String _Field_ID = "id_subscribers";
    private static final String _Field_Name = "name_subscribers";
    private static final String _Field_Phone = "phone_subscribers";

    // Запрос создания таблицы
    private static final String _Query_CreateTable = "CREATE TABLE " + _TableName + "("
            + _Field_ID + " INTEGER PRIMARY KEY,"
            + _Field_Name + " TEXT,"
            + _Field_Phone + " TEXT);";

    // Запрос вывода всех контактов
    private static final String _Query_SelectTable = "SELECT * FROM " + _TableName;

    // Запрос на вывода количества контактов
    private static final String _Query_CountRows_Table = "SELECT COUNT(*) FROM " + _TableName;

    // Конструктор
    public DatabaseHandler(Context context)
    {
        super(context, _DatabaseName, null, _DatabaseVersion);
        Log.e("n", "Call constructor");
    }

    // Добавление абонента в базу данных
    public void AddSubcriber(Subscriber contact)
    {
        SQLiteDatabase db = this.getWritableDatabase();

        /*ContentValues values = new ContentValues();

        values.put(_Field_Name, contact.getName());
        values.put(_Field_Phone, contact.getPhone());

        db.insert(_TableName, null, values);
        db.close();
        */
        Log.d("n", "Insert rows: " + contact.getName());
    }

    // Вывод всех абонентов
    public List<Subscriber> getAllSubscriber()
    {
        List<Subscriber> allSubscriber = new ArrayList<Subscriber>();
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(_Query_SelectTable, null);

        if(cursor.getCount() != 0)
        {
            do
            {
                Subscriber tmpSub = new Subscriber(cursor.getInt(0), cursor.getString(1), cursor.getString(2));
                allSubscriber.add(tmpSub);
            } while(cursor.moveToNext());
        }

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

    // Вывод количества абонентов
    public int getSubscriberCount()
    {
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(_Query_CountRows_Table, null);
        db.close();
        cursor.close();
        return cursor.getCount();
    }

    // Удаление всех контактов
    public void deleteAllSubscriber()
    {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(_TableName, null, null);
        db.close();
    }

    @Override
    public void onCreate(SQLiteDatabase db)
    {
        db.execSQL(_Query_CreateTable);
        Log.e("n", "Database create");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    {
        db.execSQL("DROP TABLE IF EXISTS " + _TableName);
        onCreate(db);
        Log.e("n", "Database onUpgrade");
    }
}

这是我与数据库进行通信的类,在主程序之后添加新行:

DatabaseHandler dbConnect = new DatabaseHandler(this);
dbConnect.AddSubcriber(new Subscriber("Petr Umine", "19234234432"));

在我的logCat中查看错误: &#34; 02-24 19:12:41.440 17415-17415 / ru.phonebook W / System.err:无效的int:&#34;&#34; &#34; 我正在调整方法&#34; AddSubcriber&#34;,这个错误粉碎后这行SQLiteDatabase db = this.getWritableDatabase();

是什么?

0 个答案:

没有答案