Не могу создать экземпляр класса;нет пустой ошибки конструктора в Eclipse при создании базы данных в androild sqlite - PullRequest
0 голосов
/ 08 марта 2012

Я пытаюсь создать простую базу данных с 2 столбцами.Вот мой код:

public class DataTest extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "data.db";
private static final int DATABASE_VERSION = 1;

/** Create a helper object for the testdata database */
public DataTest(Context ctx) {
super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + _ID
        + " INTEGER PRIMARY KEY AUTOINCREMENT, " + NAME + " TEXT NOT NULL, " + CITY + " TEXT NOT NULL" + ");");
}

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

Я также создал класс Data.java, с помощью которого я добавляю и извлекаю данные.Когда я запускаю код, я получаю сообщение об ошибке: "Unable to instantiate activity component info. java.lang.instantiation exception; can't instantiate class org.example.testdata.DataTest; no empty constructor. "

Просьба помочь мне исправить эту ошибку.

Мой класс data.java:

public class Data extends Activity {
private DataTest data;
    public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
data = new DataTest(this);
try {
//addEvent("Hello, Android!");
    addData("Lavanya", "Knoxville");
Cursor cursor = getData();
showData(cursor);
} finally {
data.close();
}
}   

   private void addData(String string, String string1) 
{
    // Insert a new record into the Events data source.
    // You would do something similar for delete and update.
    SQLiteDatabase db = data.getWritableDatabase();
    ContentValues values = new ContentValues();

    values.put(NAME, string);
    values.put(CITY, string1);
    db.insertOrThrow(TABLE_NAME, null, values);
}

private static String[] FROM = { _ID, NAME, CITY, };

private static String ORDER_BY = NAME + " DESC";
private Cursor getData() {
// Perform a managed query. The Activity will handle closing
// and re-querying the cursor when needed.
SQLiteDatabase db = data.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME, FROM, null, null, null, null,
null, ORDER_BY);
startManagingCursor(cursor);
return cursor;
}

private void showData(Cursor cursor) {
    // Stuff them all into a big string
    StringBuilder builder = new StringBuilder(
    "Saved data:\n");
    while (cursor.moveToNext()) {
    // Could use getColumnIndexOrThrow() to get indexes
    long id = cursor.getLong(0);
    //long time = cursor.getLong(1);
    String name = cursor.getString(2);
    String city = cursor.getString(2);
    builder.append(id).append(": ");
    //builder.append(time).append(": ");
    builder.append(name).append("\n");
    builder.append(city).append("\n");
    }
    // Display on the screen
    TextView text = (TextView) findViewById(R.id.text);
    text.setText(builder);
    }
}

Ответы [ 2 ]

0 голосов
/ 02 июня 2014

У меня тоже была такая же проблема.Я обнаружил, что каким-то образом дополнительный код генерируется в файле манифеста Android.Проверьте это.В моем случае я нашел тег <provider></provider>, который не был необходим, и после удаления мой код работал отлично.

0 голосов
/ 22 марта 2012

Вы можете попробовать этот код

public class Database_creat {
    private static final String DATABASE_NAME = "ToDo_List.db";
    public static final String DATABASE_TABLE_CATEGORY = "category";
    public static final String DATABASE_TABLE_TODO_LIST = "todo_list";
    private static final int DATABASE_VERSION = 1;
    public ArrayList<ModelToDO> list;


    private DataBaseHelper mDbhelper;
    private SQLiteDatabase mDb;

    Context mContext;
    private static final String DATABASE_CREATE_CATEGORY = "create table category(id integer primary key autoincrement , "
            + "category text not null);";
    private static final String DATABASE_CREATE_TODO_LIST = "create table todo_list(id integer primary key autoincrement , "
            + "title text not null,description text not null,category text not null, due_date Date not null,alarm_time text ,alarm_set text,priority text,parform Boolean);";

    private static class DataBaseHelper extends SQLiteOpenHelper {

        DataBaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
            // TODO Auto-generated constructor stub
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            db.execSQL(DATABASE_CREATE_CATEGORY);
            db.execSQL(DATABASE_CREATE_TODO_LIST);
        }

        //Delete All todo_list Table info
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
            db.execSQL("DROP TABLE IF EXISTS submit");
            onCreate(db);
        }
    }

    public Database_creat(Context context) {
        this.mContext = context;
    }

    public Database_creat Open() throws SQLException {
        mDbhelper = new DataBaseHelper(mContext);
        mDb = mDbhelper.getWritableDatabase();
        return this;

    }

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

    //Add new Category name
    public long insertinfo(String cate) {
        ContentValues con = new ContentValues();
        con.put("category", cate);
        return mDb.insert(DATABASE_TABLE_CATEGORY, null, con);
    }

    //Get All Category Name
    public Cursor getInfoRecords() {
        return mDb.query(DATABASE_TABLE_CATEGORY, new String[] { "id","category" }, null, null, null, null, null);
    }

    //Get All todo_list Table record 
    public Cursor getInfoRecords_todo() {
        return mDb.query(DATABASE_TABLE_TODO_LIST, new String[] { "id",
                "title", "description", "category", "due_date", "alarm_time",
                "alarm_set", "priority", "parform" }, null, null, null, null,
                null);
    }

    //Delete All todo_list Table info
    public void delall() {
        // TODO Auto-generated method stub
        mDb.delete(DATABASE_TABLE_TODO_LIST, null, null);
        Log.v("delete", DATABASE_CREATE_TODO_LIST + "all table data delete");
    }

    //new Record insert in todo_list table  
    public Long insert_todoinfo(String a, String b, String c, String d,
            String e, String f, String g) {
        // TODO Auto-generated method stub
        ContentValues con = new ContentValues();
        con.put("title", a);
        con.put("description", b);
        con.put("category", e);
        con.put("due_date", c);
        con.put("alarm_time", d);
        con.put("alarm_set", f);
        con.put("priority", g);
        con.put("parform", "false");
        return mDb.insert(DATABASE_TABLE_TODO_LIST, null, con);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...