|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
Добрый день. Только начал изучение программирование под Андроид. Начал с того что решил написать небольшое приложение с 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); } } ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2013, 11:49 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
Странно. Если написать public class DModule extends android.database.sqlite.SQLiteOpenHelper { вместо public class DModule extends SQLiteOpenHelper { и убрать строку import android.database.sqlite.SQLiteOpenHelper то ошибка исчезает. Кто может объяснить причину буду признателен ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2013, 15:10 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
наверное правильно import android.database.sqlite; ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2013, 16:16 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
Совсем интересно. Вернул после компиляции "удачного варианта" все к началу. Ошибок не стало. Барабашка ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2013, 16:55 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
да можно просто нажать, если работаете в eclipse , ctrl+shif+o и он сам импорты добавит какие нужны. в андроид студио чуть по другому. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 02:18 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
Доброе утро коллеги. Подскажите пожалуйста каким образом запускать программу на отладку в Eclipse ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 10:01 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
Разобрался. Но вот никак не могу найти где же создалась сама база данных. Почему то при выполнении команды 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. Но похоже. что в эту функцию никто и не собирался "заходить" ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 10:26 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
bestonixDModule Remind_DB = new DModule(this); а где вызываешь создание ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 12:40 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
Разве команда 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));"); } который полагаю и должен вызываться автоматически ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 12:53 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
ладно, а где вызываешь getWritableDatabase() ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 13:06 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
Джибс, Можно я выложу коды двух файлов,. чтоб было видно чего я наделал и где ошибся ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 13:46 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
Файл главной активности: 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); // ЧЧ:ММ:СС - формат времени } } ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 14:25 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
private static final String DB_NAME = "D:/Onix/Projects/Eclipse/Remind/Database/remind_db.sqlite"; это что такое ? private static final String DB_NAME = "remind_db"; так попробуйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 14:36 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
Джибс, private static final String DB_NAME = "D:/Onix/Projects/Eclipse/Remind/Database/remind_db.sqlite"; Это путь к базе, которую создал и вставил пару строк в таблицу с помощью Менеджера SQLite. private static final String DB_NAME = "remind_db"; Собственно с начала так и было прописано. Но я так и не смог найти где же она создалась. Допустим я пропишу "укороченную" строку, как Вы предлагаете. Как в таком случае программа узнает точный путь к базе ? Ведь нигде в приложении не указан этот путь. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 14:59 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
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"; Собственно с начала так и было прописано. Но я так и не смог найти где же она создалась. Допустим я пропишу "укороченную" строку, как Вы предлагаете. Как в таком случае программа узнает точный путь к базе ? Ведь нигде в приложении не указан этот путь. приложение знает где лежит бд. она будет лежать там, куда установится приложение. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 15:31 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
да, и еще. при установки приложения БД само создается. а по поводу пути, вы и в правду думаете, что эмулятор знает про ваши диски итд итп ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 15:33 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
Джибс, Т.е. вы хотите сказать, что базука лежит в эмуляторе и искать ее надо именно в папках эмулятора. Я правильно соображаю ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 15:53 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
да. именно. условно по пути /data/data/твой.пакет (типа com.exemple.superprojct)/databases/ что бы ее открыть, возможно потребуется дать доступ на чтение (по умолчанию доступ только руту). через adb можно будет сделать, скачать локально и посмотреть содержимое. по идее в еклипсе можно плагин воткнуть sqllite explorer, но я что то не смог заставить его работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 16:08 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
смотри если eclipse DDMS -> File Explorer -> каталог data Красным - пути. Зеленым название плагина, который я не смог заставить работать. Синим, можно вытаскивать или запихивать файлы ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 16:18 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
Джибс, Большое спасибо за помощь. Сегодня что-то стало проясняться, что и как. Немного правда, но все равно приличный шаг сделал с вашей помощью. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 16:47 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
Джибс, доброе утро. Судя по всему у вас есть богатый опыт программирования под андроид. Вопрос есть, если можно. Как в Eclipse в режиме Debug увидеть, какие значения принимают переменные ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2013, 09:02 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
window -> show view -> other -> variables ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2013, 11:17 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
точнее other -> debug -> variables ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2013, 11:18 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
Джибсточнее other -> debug -> variables Эту страницу я видел, но не нашел там интересующей информации. Да и добавить туда переменную нет возможности, по типу Borland'овских продуктов. Думал, что и здесь должно быть что-то подобное ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2013, 12:36 |
|
Implicit super constructor SQLiteOpenHelper()
|
|||
---|---|---|---|
#18+
все правильно, у мен как то там показываются переменные, вот я и про это окно сказал. на самом деле 1. можно выделить интересующую тебя переменную или просто курсор поставить, правой кнопкой -> watch 2. так же можно открыть окошко Window -> Show -> Expressions (после watch) автоматом откроется , в принципе туда можешь и ручками писать переменные ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2013, 12:56 |
|
|
start [/forum/topic.php?fid=13&msg=38503734&tid=1331701]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 270ms |
total: | 391ms |
0 / 0 |