SQLite, dabase.insert () возвращает -1 - PullRequest
0 голосов
/ 21 октября 2018

Я столкнулся с проблемой с моим кодом, когда я пытаюсь вставить информацию в свою базу данных, используя функцию вставки (tablename, null, contenValues), она возвращает -1.Вот мой код

    public void addItem(View view) {
        String t1 = nameEt.getText().toString();
        String t2 = priceEt.getText().toString();

        if(t1.isEmpty() || t2.isEmpty()) {
            Functions.message(this, "Enter both fields");
        }
        else {
            long id = helper.insertData(t1, t2);
            if (id<=0) {
                Functions.message(this, "Unsuccessful");
            }
            else {
                Functions.message(this, "Inserted!");
            }
        }

   class myDataBaseAdapter {
                private myDataBaseHelper myhelper;
                myDataBaseAdapter(Context context) {
                    myhelper = new myDataBaseHelper(context);
                }

                long insertData(String name, String price) {

                    long id;

                    SQLiteDatabase db = myhelper.getWritableDatabase();
                    ContentValues contentValues = new ContentValues();
                    contentValues.put(myDataBaseHelper.NAME, name);
                    contentValues.put(myDataBaseHelper.PRICE, price);
                    id = db.insert(myDataBaseHelper.TABLE_NAME, null, contentValues);
                    return id;
                }

                static class myDataBaseHelper extends SQLiteOpenHelper {

                    private static final String DATABASE_NAME = "myDataBase";
                    private static final String TABLE_NAME = "myTable";
                    private static final int DATABASE_VERSION = 1;
                    private static final String UID = "_id";
                    private static final String NAME = "Name";
                    private static final String PRICE = "Price";
                    private static final String CREATE_TABLE = "CREATE TABLE "+DATABASE_NAME+" ("+UID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+NAME+" VARCHAR(255), "+PRICE+" VARCHAR(255));";
                    private static final String DROP_TABLE = "DROP TABLE IF EXISTS "+TABLE_NAME;
                    private Context context;

                    myDataBaseHelper(Context context) {
                        super(context, DATABASE_NAME, null, DATABASE_VERSION);
                        this.context = context;
                        Functions.message(context, "constructor called");
                    }

                    @Override
                    public void onCreate(SQLiteDatabase db) {
                        try {
                            db.execSQL(CREATE_TABLE);
                            Functions.message(context, "onCreate called");
                        } catch (SQLException e) {
                            Functions.message(context, ""+e);
                        }
                    }

                    @Override
                    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                        try {
                            db.execSQL(DROP_TABLE);
                            Functions.message(context, "onUpgrade called");
                            onCreate(db);
                        } catch (SQLException e) {
                            Functions.message(context, ""+e);
                        }
                    }
                }
            }

Функция сообщения - это просто простое сообщение, чтобы помочь мне.Я использую Android Studio, если это имеет какое-либо значение.как я могу исправить это

1 Ответ

0 голосов
/ 21 октября 2018

Ваш onCreate() создает таблицу с именем myDataBase при попытке вставки на myTable.Измените

"CREATE TABLE "+DATABASE_NAME+" 

на

"CREATE TABLE "+TABLE_NAME+" 

. Вы можете удалить свое приложение, чтобы воссоздать базу данных.

Пока есть, рассмотрите возможность удаления всех этих catch (SQLException) блоков - если естьБыли проблемы с SQL, они были бы скрыты.Вы хотите обнаружить ошибки программирования как можно раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...