首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有这样的表:奖赏(代码1):,在编译时:插入奖励(Reward2,Reward1,Reward3)值(?,?,?)

没有这样的表:奖赏(代码1):,在编译时:插入奖励(Reward2,Reward1,Reward3)值(?,?,?)
EN

Stack Overflow用户
提问于 2020-03-22 04:15:58
回答 2查看 66关注 0票数 0

你好,我是一个学生,用sql和android工作室做我最后一年的项目。我想要创建多个表,并且我尝试遵循这个示例,但是它不起作用。该错误没有创建表。在这里我的编码

DatabaseHelper.java

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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();
                }
            }
        });
    }
}

请你帮我找出解决办法,告诉我出了什么问题:

EN

回答 2

Stack Overflow用户

发布于 2020-03-23 11:19:05

我不知道您的错误来自哪里,但是,我假设它在启动或何时您插入数据。

我创建SQL表如下所示。

然而,我确实遇到了一个非常烦人的问题,如果我改变我的表,我的应用程序会崩溃,因为它不会找到它。解决办法是,在将应用程序从android工作室上传到我的手机之前,我需要卸载手机上的应用程序。希望它能帮上忙

代码语言:javascript
复制
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);

    }

保持安全

票数 0
EN

Stack Overflow用户

发布于 2020-04-22 10:23:40

谢谢尤金·特洛伊扬斯基,福帕斯和托马斯·莫里斯。我已经解决了问题。在插入数据代码时,应该根据create语句为列指定正确的名称,但我的编写方式不同。

再次感谢各位!

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60795874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档