нет такой таблицы: награда (код 1): при компиляции: ВСТАВИТЬ В награду (НАГРАД2, НАГРАД1, НАГРАД3) ЗНАЧЕНИЯ (?,?,?) - PullRequest
0 голосов
/ 22 марта 2020

Здравствуйте, я студент и работаю над последним проектом в студии sql и android. Я хочу создать несколько таблиц, и я пытаюсь следовать примеру, но это не работает. ошибка не была создана таблица. Вот мое кодирование

DatabaseHelper. java

package com.example.multipletable;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import androidx.annotation.Nullable;

import static android.content.ContentValues.TAG;

public class DatabaseHelper extends SQLiteOpenHelper {

    private static final String DATABASE_NAME = "MultipleTable";
    private static final int DATABASE_VERSION = 3;
    private static final String TABLE_1 = "register";
    private static final String TABLE_2 = "activity";
    private static final String TABLE_3 = "reward";

    String table_1 = "CREATE TABLE "+TABLE_1+" (matricno TEXT PRIMARY KEY, password TEXT, email TEXT)";
    String table_2 = "CREATE TABLE "+TABLE_2+" (id INTEGER PRIMARY KEY AUTOINCREMENT, t_question TEXT, date DEFAULT CURRENT_DATE)";
    String table_3 = "CREATE TABLE "+TABLE_3+" (_id INTEGER PRIMARY KEY AUTOINCREMENT, badge_green TEXT, badge_purple TEXT, badge_maroon TEXT)";


    public DatabaseHelper(@Nullable Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL(table_1);

    }

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

        Log.d(TAG, "Current version"+db.getVersion());

        for (int version=oldVersion+1; version<=newVersion; version++) {
            switch (version) {
                case 2:
                    db.execSQL(table_2);

                case 3:
                    db.execSQL(table_3);
            }
        }





//        Log.e("DATABASE VERSION", db.getVersion()+" ");
//
//        db.execSQL("DROP TABLE IF EXISTS "+TABLE_1);
//        db.execSQL("DROP TABLE IF EXISTS "+TABLE_2);
//        db.execSQL("DROP TABLE IF EXISTS "+TABLE_3);
//
//        onCreate(db);

    }

    public boolean insert(String matNo, String pswd, String email) {
        SQLiteDatabase db_1 = this.getWritableDatabase();
        ContentValues contentValues1 = new ContentValues();
        contentValues1.put("MatricNo", matNo);
        contentValues1.put("Password", pswd);
        contentValues1.put("Email", email);
        db_1.insert(TABLE_1, null, contentValues1);
        return true;
    }

    public boolean insert2(String question) {
        SQLiteDatabase db_2 = this.getWritableDatabase();
        ContentValues contentValues2 = new ContentValues();
        contentValues2.put("Question", question);
        contentValues2.put("Date", getDate());
        db_2.insert(TABLE_2, null, contentValues2);
        return true;
    }

    public boolean insert3(String green, String purple, String maroon) {
        SQLiteDatabase db_3 = this.getWritableDatabase();
        ContentValues contentValues3 = new ContentValues();
        contentValues3.put("Reward1", green);
        contentValues3.put("Reward2", purple);
        contentValues3.put("Reward3", maroon);
        db_3.insert(TABLE_3, null, contentValues3);
        return true;
    }

    private String getDate() {
        SimpleDateFormat dateFormat = new SimpleDateFormat(
                "dd-MM-yyyy", Locale.getDefault());
        Date date = new Date();
        return dateFormat.format(date);
    }
}

MainActiviti. java

package com.example.multipletable;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    EditText name, pswd, email;
    Button btn_1;
    DatabaseHelper db;

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

        name = findViewById(R.id.txt_name);
        pswd = findViewById(R.id.txt_password);
        email = findViewById(R.id.txt_email);
        btn_1 = findViewById(R.id.btn_next_1);
        db = new DatabaseHelper(this);


        btn_1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String person = name.getText().toString();
                String pass = pswd.getText().toString();
                String mail = email.getText().toString();

                Boolean insert = db.insert(person, pass, mail);
                if (insert==true) {
                    Toast.makeText(getApplicationContext(), "Data 1 saved", Toast.LENGTH_SHORT).show();
                    Intent intent1 = new Intent(MainActivity.this, Activity2.class);
                    startActivity(intent1);
                }
                else {
                    Toast.makeText(getApplicationContext(), "Data 1 error", Toast.LENGTH_SHORT).show();
                }


            }
        });
    }
}

Activity2. java

package com.example.multipletable;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Activity2 extends AppCompatActivity {

    EditText question;
    Button btn2;
    DatabaseHelper db;

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

        question = findViewById(R.id.txt_question);
        btn2 = findViewById(R.id.btn_next_2);
        db = new DatabaseHelper(this);

        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String ques = question.getText().toString();

                Boolean insert2 = db.insert2(ques);
                if (insert2==true) {

                    Toast.makeText(getApplicationContext(), "Data 2 saved", Toast.LENGTH_SHORT).show();
                    Intent intent2 = new Intent(Activity2.this, Activity3.class);
                    startActivity(intent2);
                }
                else {
                    Toast.makeText(getApplicationContext(), "Data 2 error", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

Activity3. java

package com.example.multipletable;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Activity3 extends AppCompatActivity {

    EditText green, purple, maroon;
    Button btn3;
    DatabaseHelper db;

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

        green = findViewById(R.id.txt_green);
        purple = findViewById(R.id.txt_purple);
        maroon = findViewById(R.id.txt_maroon);
        btn3 = findViewById(R.id.btn_next_3);
        db = new DatabaseHelper(this);

        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String grn = green.getText().toString();
                String ppl = purple.getText().toString();
                String mrn = maroon.getText().toString();

                Boolean insert3 = db.insert3(grn, ppl, mrn);
                if (insert3==true) {
                    Toast.makeText(getApplicationContext(), "Data 3 saved", Toast.LENGTH_SHORT).show();
                    Intent intent3 = new Intent(Activity3.this, FINISH.class);
                    startActivity(intent3);
                }
                else  {
                    Toast.makeText(getApplicationContext(), "Data 3 error", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

Не могли бы вы помочь мне найти решение и сказать мне что не так: (

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Спасибо, Евгений Троянский, Форпас и Томас Моррис. Я решил проблему. Предполагается назначить правильное имя для столбца в соответствии с оператором создания таблицы при вставке кода данных, но я пишу это по-другому.

Еще раз спасибо, ребята!

0 голосов
/ 23 марта 2020

Я не уверен, откуда возникла ваша ошибка, но я предполагаю, что она возникает при запуске или когда вы вставляете данные.

Я создаю свою таблицу SQL, как показано ниже.

Однако Я действительно столкнулся с действительно раздражающей проблемой: если я изменю свой стол, мое приложение взломает sh, поскольку оно не найдет его. Исправление было то, что мне нужно было удалить приложение на моем телефоне перед загрузкой приложения из android studio на мой телефон. Надеюсь, что это поможет

public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASE_NAME ="TESTING.db";
    // Database Version
    private static final int DATABASE_VERSION = 1;
    public static final String TABLE_1 = "T1";
    public static final String TABLE_2 = "T2";
    public static final String TABLE_3  = "T3";

    public static final String COL1 = "ID";
    public static final String COL2 = "D1";
    public static final String COL3 = "D2";
    public static final String COL4 = "D3";
    public static final String COL5 = "D4";
    public static final String COL6 = "D5";
    public static final String COL7 = "D6";
    public static final String COL8 = "time";


    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {

        // creating required tables
        String Created_TABLE_1= "CREATE TABLE " + TABLE_1 + " (ID INTEGER PRIMARY KEY, " +
                "D1 TEXT, D2 TEXT, D3, TEXT, D4 TEXT, D5 TEXT, D6 TEXT, TIME TEXT)";
        String Created_TABLE_2= "CREATE TABLE " + TABLE_2 + " (ID INTEGER PRIMARY KEY, " +
                "D1 TEXT, D2 TEXT, D3, TEXT, D4 TEXT, D5 TEXT, D6 TEXT, TIME TEXT)";
        String Created_TABLE_3= "CREATE TABLE " + TABLE_3 + " (ID INTEGER PRIMARY KEY, " +
                "D1 TEXT, D2 TEXT, D3, TEXT, D4 TEXT, D5 TEXT, D6 TEXT, TIME TEXT)";


        db.execSQL(Created_TABLE_1);
        db.execSQL(Created_TABLE_2);
        db.execSQL(Created_TABLE_3);

    }

Ps Будьте в безопасности все

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