powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Implicit super constructor SQLiteOpenHelper()
25 сообщений из 27, страница 1 из 2
Implicit super constructor SQLiteOpenHelper()
    #38501919
bestonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Только начал изучение программирование под Андроид.
Начал с того что решил написать небольшое приложение с SQLite.
Нашел небольшой пример и для начала решил повторить с небольшими изменениями.
Но тут же компилятор выдает мне сообщение: Implicit super constructor SQLiteOpenHelper() is undefined for default constructor. Must define an explicit constructor DM.java
Поиски по инету дают рекомендации, что нужен конструктор, но он изначально имеется.
Подскажите пожалуйста в чем дело.
Вот код класса.
Ругается на строку - import android.database.sqlite.SQLiteOpenHelper;
package com.example.remind;

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

public class DModule extends SQLiteOpenHelper {

private static final String DB_NAME = "remind_dbase.db";
private static final int DB_VERSION = 1;
private static final String TABLE_NAME = "t_remind";
private static final String SQL_CREATE_ENTRIES = "CREATE TABLE "
+ TABLE_NAME + " (_id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "data VARCHAR(10), time VARCHAR(8), messages VARCHAR(255));";

private static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME;


public DModule(Context context) {
super(context, DB_NAME, null, DB_VERSION);
// TODO Auto-generated constructor stub
}

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

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVresion) {
// TODO Auto-generated method stub
db.execSQL(SQL_DELETE_ENTRIES);
}

}
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38502254
bestonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странно.

Если написать

public class DModule extends android.database.sqlite.SQLiteOpenHelper {
вместо
public class DModule extends SQLiteOpenHelper {

и убрать строку import android.database.sqlite.SQLiteOpenHelper

то ошибка исчезает.

Кто может объяснить причину буду признателен
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38502382
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверное правильно

import android.database.sqlite; ?
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38502445
bestonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Совсем интересно.

Вернул после компиляции "удачного варианта" все к началу.
Ошибок не стало. Барабашка ?
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38502975
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да можно просто нажать, если работаете в eclipse , ctrl+shif+o

и он сам импорты добавит какие нужны.

в андроид студио чуть по другому.
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38503107
bestonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе утро коллеги.

Подскажите пожалуйста каким образом запускать программу на отладку в Eclipse ?
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38503138
bestonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался.

Но вот никак не могу найти где же создалась сама база данных.
Почему то при выполнении команды
DModule Remind_DB = new DModule(this);

не отработала функция из этого класса
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE "
+ TABLE_NAME + " (_id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "data VARCHAR(10), time VARCHAR(8), messages VARCHAR(255));");
}
точку останова проставил на строке db.execSQL. Но похоже. что в эту функцию никто и не собирался "заходить"
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38503350
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bestonixDModule Remind_DB = new DModule(this);


а где вызываешь создание ?
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38503388
bestonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разве команда new не вызывает метод onCreate ?

В классе Dmodule усть метод:
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE "
+ TABLE_NAME + " (_id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "data VARCHAR(10), time VARCHAR(8), messages VARCHAR(255));");
}
который полагаю и должен вызываться автоматически
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38503414
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ладно, а где вызываешь

getWritableDatabase() ?
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38503498
bestonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джибс,

Можно я выложу коды двух файлов,. чтоб было видно чего я наделал и где ошибся ?
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38503582
bestonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Файл главной активности:
package com.example.remind;

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

public class MainActivity extends Activity {

DModule Remind_DB;
SQLiteDatabase sqdb;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Remind_DB = new DModule(this);

sqdb = Remind_DB.getWritableDatabase();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

/*public void btnClick(View v) {
switch(v.getId()) {
case R.id.btn:
Cursor cursor = sqdb.query(DModule.TABLE_NAME, new String[] {
DModule._id, DModule.message }, null, // The columns for the WHERE clause
null, // The values for the WHERE clause
null, // don't group the rows
null, // don't filter by row groups
null // The sort order
);
while (cursor.moveToNext()) {
// GET COLUMN INDICES + VALUES OF THOSE COLUMNS
int id = cursor.getInt(cursor.getColumnIndex(DModule._id));
String name = cursor.getString(cursor.getColumnIndex(DModule.message));
Log.i("LOG_TAG", "ROW " + id + " HAS NAME " + name);
break;
}
}
}*/

@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
// закрываем соединения с базой данных
sqdb.close();
Remind_DB.close();
}
}

файл с описанием БД:

package com.example.remind;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.Calendar;
import java.util.Timer;

public class DModule extends SQLiteOpenHelper {

private static final String DB_NAME = "D:/Onix/Projects/Eclipse/Remind/Database/remind_db.sqlite";
private static final int DB_VERSION = 1;
private static final String TABLE_NAME = "tMessage";

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("insert into "+ TABLE_NAME + " (data , message) +" +
" values ( "+getCurrentTime()+", 'Next mesage'");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVresion) {
// TODO Auto-generated method stub
//db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}

public DModule(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}

private String getCurrentTime() {
Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
return String.format("%02d:%02d:%02d", hour, minute, second); // ЧЧ:ММ:СС - формат времени
}
}
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38503608
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
private static final String DB_NAME = "D:/Onix/Projects/Eclipse/Remind/Database/remind_db.sqlite";

это что такое ?

private static final String DB_NAME = "remind_db";

так попробуйте.
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38503666
bestonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джибс,

private static final String DB_NAME = "D:/Onix/Projects/Eclipse/Remind/Database/remind_db.sqlite";

Это путь к базе, которую создал и вставил пару строк в таблицу с помощью Менеджера SQLite.

private static final String DB_NAME = "remind_db";

Собственно с начала так и было прописано. Но я так и не смог найти где же она создалась.
Допустим я пропишу "укороченную" строку, как Вы предлагаете. Как в таком случае программа узнает точный путь к базе ?
Ведь нигде в приложении не указан этот путь.
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38503734
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bestonixДжибс,

private static final String DB_NAME = "D:/Onix/Projects/Eclipse/Remind/Database/remind_db.sqlite";

Это путь к базе, которую создал и вставил пару строк в таблицу с помощью Менеджера SQLite.

private static final String DB_NAME = "remind_db";

Собственно с начала так и было прописано. Но я так и не смог найти где же она создалась.
Допустим я пропишу "укороченную" строку, как Вы предлагаете. Как в таком случае программа узнает точный путь к базе ?
Ведь нигде в приложении не указан этот путь.

приложение знает где лежит бд.
она будет лежать там, куда установится приложение.
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38503741
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, и еще.
при установки приложения БД само создается.


а по поводу пути, вы и в правду думаете, что эмулятор знает про ваши диски итд итп ?
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38503795
bestonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джибс,

Т.е. вы хотите сказать, что базука лежит в эмуляторе и искать ее надо именно в папках эмулятора.
Я правильно соображаю ?
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38503834
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да.
именно.

условно по пути
/data/data/твой.пакет (типа com.exemple.superprojct)/databases/

что бы ее открыть, возможно потребуется дать доступ на чтение (по умолчанию доступ только руту).

через adb можно будет сделать, скачать локально и посмотреть содержимое.
по идее в еклипсе можно плагин воткнуть sqllite explorer, но я что то не смог заставить его работать.
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38503858
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смотри

если eclipse

DDMS -> File Explorer -> каталог data

Красным - пути.
Зеленым название плагина, который я не смог заставить работать.
Синим, можно вытаскивать или запихивать файлы
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38503914
bestonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джибс,

Большое спасибо за помощь.
Сегодня что-то стало проясняться, что и как.
Немного правда, но все равно приличный шаг сделал с вашей помощью.
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38507426
bestonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джибс, доброе утро.

Судя по всему у вас есть богатый опыт программирования под андроид.
Вопрос есть, если можно.

Как в Eclipse в режиме Debug увидеть, какие значения принимают переменные ?
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38507588
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
window -> show view -> other -> variables
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38507590
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точнее other -> debug -> variables
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38507707
bestonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джибсточнее other -> debug -> variables

Эту страницу я видел, но не нашел там интересующей информации.
Да и добавить туда переменную нет возможности, по типу Borland'овских продуктов.
Думал, что и здесь должно быть что-то подобное
...
Рейтинг: 0 / 0
Implicit super constructor SQLiteOpenHelper()
    #38507736
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все правильно,

у мен как то там показываются переменные, вот я и про это окно сказал.

на самом деле

1. можно выделить интересующую тебя переменную или просто курсор поставить, правой кнопкой -> watch
2. так же можно открыть окошко Window -> Show -> Expressions (после watch) автоматом откроется ,
в принципе туда можешь и ручками писать переменные
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Android [игнор отключен] [закрыт для гостей] / Implicit super constructor SQLiteOpenHelper()
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]