powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / SQLite
15 сообщений из 15, страница 1 из 1
SQLite
    #38831202
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делаю по примерам БД для андроид,
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
public class DataBase extends SQLiteOpenHelper  implements BaseColumns{

    private static final String DATABASE_NAME = "cat_database.db";
    private static final int DATABASE_VERSION = 1;
    public static final String TABLE_NAME = "contact_table";
    public static final String CATNAME = "catname";
    private static final String SQL_CREATE_ENTRIES = "CREATE TABLE " + TABLE_NAME + " (" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
            + CATNAME + " VARCHAR(255));";

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

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        Log.w("LOG_TAG", "Обновление базы данных с версии " + oldVersion + " до версии " + newVersion + ", которое удалит все старые данные");
        // Удаляем предыдущую таблицу при апгрейде
        db.execSQL(SQL_DELETE_ENTRIES);
        // Создаём новый экземпляр таблицы
        onCreate(db);
    }

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

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

}




и обработчик
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    public void sqlInto(View view){
        // Метод 1: INSERT через класс CONTENTVALUE
        ContentValues cv = new ContentValues();
        cv.put(DataBase.CATNAME, txtData.getText().toString());
        // вызываем метод вставки
        sqdb.insert(DataBase.TABLE_NAME, DataBase.CATNAME, cv);
        txtData.setText("");




    }




но выходит ошибку


09:09:57.529 2046-2046/com.example.eldos.myapplication E/SQLiteLog﹕ (1) no such table: contact_table
12-11 09:09:57.549 2046-2046/com.example.eldos.myapplication E/SQLiteDatabase﹕ Error inserting catname=lkj
android.database.sqlite.SQLiteException: no such table: contact_table (code 1): , while compiling: INSERT INTO contact_table(catname) VALUES (?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
at com.example.eldos.myapplication.DB.sqlInto(DB.java:98)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at android.view.View$1.onClick(View.java:3818)
at android.view.View.performClick(View.java:4438)
at android.view.View$PerformClick.run(View.java:18422)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)


в чем может быть дело,
ведь таблица с полями создает, что еще просит он
...
Рейтинг: 0 / 0
SQLite
    #38831220
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосведь таблица с полями создает, что еще просит он
Не создает, сам-же понимаешь... Где создается экземпляр хелпера?
...
Рейтинг: 0 / 0
SQLite
    #38831259
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanЕлдосведь таблица с полями создает, что еще просит он
Не создает, сам-же понимаешь... Где создается экземпляр хелпера?
в активити там же
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
    DataBase sqh;
    SQLiteDatabase sqdb;
    EditText txtData;

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

        txtData = (EditText) findViewById(R.id.txtData);

        // Инициализируем наш класс-обёртку
        sqh = new DataBase(this);

        // База нам нужна для записи и чтения
        sqdb = sqh.getWritableDatabase();

    }
...
Рейтинг: 0 / 0
SQLite
    #38831354
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдос, вставь log в OnCreate, а перед этим удали приложение полностью. Со всеми данными.
...
Рейтинг: 0 / 0
SQLite
    #38831384
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanЕлдос, вставь log в OnCreate, а перед этим удали приложение полностью. Со всеми данными.

как я понимаю лог должен выводить в консоль
Код: java
1.
2.
3.
4.
5.
6.
7.
    public void onCreate(SQLiteDatabase db) {
        Log.w("LOG_TAG", "Will create table");

        db.execSQL(SQL_CREATE_ENTRIES);
        Log.w("LOG_TAG", "Created table");

    }



но почему делаю поиск нету записей,
я поставил лог на обработчик, с таким же именем log_tag но его не видно,
правильно ли я понимаю все, менял уровень тоже не видно
...
Рейтинг: 0 / 0
SQLite
    #38831390
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосно почему делаю поиск нету записей,
Возможно база создана была ранее, но без таблиц. Удалял приложение?
...
Рейтинг: 0 / 0
SQLite
    #38831419
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanЕлдосно почему делаю поиск нету записей,
Возможно база создана была ранее, но без таблиц. Удалял приложение?
я думал она каждый раз новую установку делает,
да сейчас удалил

12-11 08:33:21.949 1499-1499/com.example.eldos.myapplication E/SQLiteLog﹕ (1) no such table: contact_table
12-11 08:35:27.125 1499-1499/com.example.eldos.myapplication E/SQLiteLog﹕ (1) no such table: contact_table
12-11 08:36:50.201 1575-1575/com.example.eldos.myapplication E/SQLiteLog﹕ (1) no such table: contact_table
12-11 09:06:12.337 1880-1880/com.example.eldos.myapplication E/SQLiteLog﹕ (1) no such table: contact_table
12-11 09:08:52.921 1965-1965/com.example.eldos.myapplication E/SQLiteLog﹕ (1) no such table: contact_table
12-11 09:09:57.529 2046-2046/com.example.eldos.myapplication E/SQLiteLog﹕ (1) no such table: contact_table
12-11 09:21:29.005 2184-2184/com.example.eldos.myapplication E/SQLiteLog﹕ (1) no such table: contact_table
12-11 09:35:53.289 2269-2269/com.example.eldos.myapplication E/SQLiteLog﹕ (1) no such table: contact_table
12-11 09:44:09.869 2353-2353/com.example.eldos.myapplication E/SQLiteLog﹕ (1) no such table: contact_table
12-11 09:44:23.549 2380-2380/com.example.eldos.myapplication E/SQLiteLog﹕ (1) no such table: contact_table
12-11 10:14:11.849 2411-2411/com.example.eldos.myapplication E/SQLiteLog﹕ (1) no such table: contact_table
12-11 11:00:41.569 2544-2544/com.example.eldos.myapplication E/SQLiteLog﹕ (1) no such table: contact_table
12-11 11:04:09.117 2615-2615/com.example.eldos.myapplication E/SQLiteLog﹕ (1) no such table: contact_table
12-11 11:09:13.181 2705-2705/com.example.eldos.myapplication E/SQLiteLog﹕ (1) no such table: contact_table
12-11 11:32:14.753 2972-2972/com.example.eldos.myapplication W/LOG_TAG﹕ Will create table
12-11 11:32:14.753 2972-2972/com.example.eldos.myapplication W/LOG_TAG﹕ Created table
выходит такой лог
...
Рейтинг: 0 / 0
SQLite
    #38831442
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдося думал она каждый раз новую установку делает,
Создает при отсутствии базы, а далее только обновляет через upgrade.

Тебе-бы еще синтаксис подучить... Откуда ты откопал про varchar?
...
Рейтинг: 0 / 0
SQLite
    #38831456
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanЕлдося думал она каждый раз новую установку делает,
Создает при отсутствии базы, а далее только обновляет через upgrade.

Тебе-бы еще синтаксис подучить... Откуда ты откопал про varchar?
а что здесь такого,
но сейчас даже инсерт не работает
...
Рейтинг: 0 / 0
SQLite
    #38831469
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдоса что здесь такого,
В том, что нет такого типа в sqlite.
Елдосно сейчас даже инсерт не работает
Он изначально не работал, таблицы-то как не было, так и не появилась.

Еще разик:
wadmanТебе-бы еще синтаксис подучить...
...
Рейтинг: 0 / 0
SQLite
    #38832042
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanЕлдоса что здесь такого,
В том, что нет такого типа в sqlite.
Елдосно сейчас даже инсерт не работает
Он изначально не работал, таблицы-то как не было, так и не появилась.

Еще разик:
wadmanТебе-бы еще синтаксис подучить...
ничего не менял, и сейчас работает нормально,
после удаления запускается нормально и сразу создает таблицу без ошибок, и добавление и инсерт работает нормально.

12-12 02:53:05.576 2215-2215/com.example.eldos.myapplication W/LOG_TAG﹕ Will create table
12-12 02:53:05.576 2215-2215/com.example.eldos.myapplication W/LOG_TAG﹕ Created table
почему так получилось?
...
Рейтинг: 0 / 0
SQLite
    #38832130
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосничего не менял, и сейчас работает нормально,
Так бабушки из бухгалтерии рассуждают :) если ничего не менял, то и поменяться ничего не могло...
...
Рейтинг: 0 / 0
SQLite
    #38832236
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanЕлдосничего не менял, и сейчас работает нормально,
Так бабушки из бухгалтерии рассуждают :) если ничего не менял, то и поменяться ничего не могло...
разве что закрыл и заново открыл среду,
вот так странно получилось
...
Рейтинг: 0 / 0
SQLite
    #38832257
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чудеса, sqlite действительно подготовлен к людям, которые привыкли работать с другими базами...

sqlite doc 2.1 Determination Of Column Affinity

The affinity of a column is determined by the declared type of the column, according to the following rules in the order shown:

If the declared type contains the string "INT" then it is assigned INTEGER affinity.

If the declared type of the column contains any of the strings "CHAR", "CLOB", or "TEXT" then that column has TEXT affinity. Notice that the type VARCHAR contains the string "CHAR" and is thus assigned TEXT affinity.

If the declared type for a column contains the string "BLOB" or if no type is specified then the column has affinity NONE.

If the declared type for a column contains any of the strings "REAL", "FLOA", or "DOUB" then the column has REAL affinity.

Otherwise, the affinity is NUMERIC.

Note that the order of the rules for determining column affinity is important. A column whose declared type is "CHARINT" will match both rules 1 and 2 but the first rule takes precedence and so the column affinity will be INTEGER.

То есть sqlite сам за тебя конвертировал varchar(255) в text.
...
Рейтинг: 0 / 0
SQLite
    #38832819
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanЧудеса, sqlite действительно подготовлен к людям, которые привыкли работать с другими базами...

sqlite doc 2.1 Determination Of Column Affinity

The affinity of a column is determined by the declared type of the column, according to the following rules in the order shown:

If the declared type contains the string "INT" then it is assigned INTEGER affinity.

If the declared type of the column contains any of the strings "CHAR", "CLOB", or "TEXT" then that column has TEXT affinity. Notice that the type VARCHAR contains the string "CHAR" and is thus assigned TEXT affinity.

If the declared type for a column contains the string "BLOB" or if no type is specified then the column has affinity NONE.

If the declared type for a column contains any of the strings "REAL", "FLOA", or "DOUB" then the column has REAL affinity.

Otherwise, the affinity is NUMERIC.

Note that the order of the rules for determining column affinity is important. A column whose declared type is "CHARINT" will match both rules 1 and 2 but the first rule takes precedence and so the column affinity will be INTEGER.

То есть sqlite сам за тебя конвертировал varchar(255) в text.

во как, это очень хорошо,
а то что я выбираю для него размер для него не имеет значение?
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / SQLite
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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