在数据库android studio中插入数据的问题

Problem with inserting data in database andoid studio

我有一个相当小的应用程序,但它不起作用


public class AddTemplateActivity extends AppCompatActivity {

    EditText heightET, descpET;
    Button addButton;

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

        heightET = (EditText) findViewById(R.id.etHeight);
        descpET = (EditText) findViewById(R.id.etDescription);

        addButton = (Button) findViewById(R.id.addButton);

        addButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MyDataBaseHelper myDB = new MyDataBaseHelper(AddTemplateActivity.this);

                myDB.addTemplate(descpET.getText().toString(), Integer.valueOf(heightET.getText().toString()));
            }
        });
    }
}

这个 activity 应该在我的 SQLite 数据库中插入数据。我创建 class


public class MyDataBaseHelper extends SQLiteOpenHelper {

    private Context context;
    private static final String DATABASE_NAME = "TemplatesLibrary.db";
    private static final int DATABASE_VERSION = 2;

    private static final String TABLE_NAME = "templates_categories";
    private static final String COLUMN_ID = "_id";
    private static final String COLUMN_DESCRIPTION = "template_description";
    private static final String COLUMN_HEIGHT = "template_height";

    public MyDataBaseHelper(@Nullable Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase database) {
        String query = "CREATE TABLE " + TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_DESCRIPTION + " TEXT, " + COLUMN_HEIGHT + " INTEGER NOT NULL);";

        database.execSQL(query);
    }

    @Override
    public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
        database.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(database);
    }

    public void addTemplate(String description, int height) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();

        cv.put(COLUMN_DESCRIPTION, description);
        cv.put(COLUMN_HEIGHT, height);

        long res = db.insert(COLUMN_DESCRIPTION, null, cv);
        if(res == -1){
            Toast.makeText(context, "Failed", Toast.LENGTH_SHORT).show();
        }
        else{
            Toast.makeText(context, "Added!", Toast.LENGTH_SHORT).show();
        }
    }
}

但是当我点击添加按钮时,我收到了

android.database.sqlite.SQLiteException: no such table: template_description (code 1 SQLITE_ERROR): , while compiling: INSERT INTO template_description(template_height,template_description) VALUES (?,?)

请给我一个解决方案。谢谢!

您需要将 table 而不是列名传递给 insert()

改变

long res = db.insert(COLUMN_DESCRIPTION, null, cv);

long res = db.insert(TABLE_NAME, null, cv);

您的 table 名称是:templates_categories 但在 addTemplate 方法中使用了 template_description .

也许你是初学者,也许你想了解 sqlite 和基础工作,但请继续使用 Room 来处理数据库