Вставьте информацию не работает в sqlite в Android-студии для практики - PullRequest
0 голосов
/ 11 ноября 2018

enter image description here

Эй, ребята, я пытался вставить некоторые данные в таблицу, созданную в Android Studio, вот код.

package database.oxbir.com.databae;

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

/**
 * Created by Oxbir on 28/10/2018.
 */

public class DataModelLayer extends SQLiteOpenHelper {
    public static final String DB_NAME = "oxbir";
    public static final int DB_VERSION = 1;
    public static final String TBL_NAME = "users";

    public static final String COL_ID =  "id";
    public static final String COL_NAME =  "name";
    public static final String COL_FAMILY =  "family";
    public static final String COL_AGE =  "age";

    public static final String Query = "CREATE TABLE IF NOT EXISTS " + TBL_NAME + "(" +
            COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
            COL_NAME + "TEXT," +
            COL_FAMILY + "TEXT," +
            COL_AGE + "INTEGER);";

    Context context;

    public DataModelLayer(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        try
        {
            db.execSQL(Query);
        }
        catch (SQLException ex)
        {
            ex.printStackTrace();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

    public long addInfo (String name, String family, int age){
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL_NAME, name);
        contentValues.put(COL_FAMILY, family);
        contentValues.put(COL_AGE, age);

        SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
        long result = sqLiteDatabase.insert(TBL_NAME, null, contentValues);
        if (result > 0)
        {
            return result;
        }
        else
        {
            return result;
        }
    }
}
package database.oxbir.com.databae;

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

/**
 * Created by Oxbir on 28/10/2018.
 */

public class DataModelLayer extends SQLiteOpenHelper {
    public static final String DB_NAME = "oxbir";
    public static final int DB_VERSION = 1;
    public static final String TBL_NAME = "users";

    public static final String COL_ID =  "id";
    public static final String COL_NAME =  "name";
    public static final String COL_FAMILY =  "family";
    public static final String COL_AGE =  "age";

    public static final String Query = "CREATE TABLE IF NOT EXISTS " + TBL_NAME + "(" +
            COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
            COL_NAME + "TEXT," +
            COL_FAMILY + "TEXT," +
            COL_AGE + "INTEGER);";

    Context context;

    public DataModelLayer(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        try
        {
            db.execSQL(Query);
        }
        catch (SQLException ex)
        {
            ex.printStackTrace();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

    public long addInfo (String name, String family, int age){
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL_NAME, name);
        contentValues.put(COL_FAMILY, family);
        contentValues.put(COL_AGE, age);

        SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
        long result = sqLiteDatabase.insert(TBL_NAME, null, contentValues);
        if (result > 0)
        {
            return result;
        }
        else
        {
            return result;
        }
    }
}

Когда я звоню в это занятие, я получаю сообщение id=1.

Я обнаружил, что действие выполнялось без проблем, поэтому приложение не аварийно завершало работу, поэтому я решил добавить запрос на вставку, чтобы проверить, не было ли что-то не так с ним.

насколько я могу судить, все выглядит хорошо, купи, как только я включу.

В моем коде приложение вылетает (temp содержит запрос, который я только что выполнил)

anyпомощь будет оценена.

1 Ответ

0 голосов
/ 11 ноября 2018

Если вы вставили точный код, то при создании sql таблицы возникла ошибка, поэтому измените ее на:

public static final String Query = "CREATE TABLE IF NOT EXISTS " + TBL_NAME + "(" +
        COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
        COL_NAME + " TEXT," +
        COL_FAMILY + " TEXT," +
        COL_AGE + " INTEGER);";

Я включил пробелы между именем полей и типом.
Теперь сначала удалите приложение и снова запустите.

Также упростите метод addInfo():

public long addInfo (String name, String family, int age){
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL_NAME, name);
    contentValues.put(COL_FAMILY, family);
    contentValues.put(COL_AGE, age);

    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
    long result = sqLiteDatabase.insert(TBL_NAME, null, contentValues);
    sqLiteDatabase.close()
    return result; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...