java - SQLite 数据库使我的应用程序崩溃

标签 java android sqlite android-sqlite sqldatareader

我正在尝试使用 android studio 制作一个项目,如视频中所示: Source 1Source 2 这是我添加的 java 类中的代码:

    package com.example.asus.androidsqlitedatabase_1;
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;

    /**
     * Created by ASUS on 7/6/2017.
     */

    public class Databasehelperclass extends SQLiteOpenHelper {
        public static final String DATABASE_NAME = "Student.db";
        public static final String TABLE_NAME = "Student_table";
        public static final String COLUMN1= "ID";
        public static final String COLUMN2 = "NAME";
        public static final String COLUMN3 = "SURNAME";
        public static final String COLUMN4 = "MARKS";

        public Databasehelperclass(Context context) {
            super(context, DATABASE_NAME, null, 1);
            SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
        }

        @Override
        public void onCreate(SQLiteDatabase sqLiteDatabase) {
            sqLiteDatabase.execSQL("Create Table" + TABLE_NAME + 
   "(ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,SURNAME TEXT,MARKS INTEGER)");}

        @Override
        public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1){
            sqLiteDatabase.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME);
            onCreate(sqLiteDatabase);
        }
    }

这是我在 MainActivity.java 中的代码

    package com.example.asus.androidsqlitedatabase_1;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;

    public class MainActivity extends AppCompatActivity {
        Databasehelperclass mydb;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mydb = new Databasehelperclass(this);
        }
    }

但是当我使用 genymotion 在模拟器上执行应用程序时,应用程序停止工作并且无法执行。请任何人帮助我!!

最佳答案

问题:查询中的空格错误

解决方案:查询应采用以下格式:

sqLiteDatabase.execSQL("CREATE TABLE " + TABLE_NAME + "("
                + COLUMN1 + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                + COLUMN2 + " TEXT, "
                + COLUMN3 + " TEXT, "
                + COLUMN4 + " INTEGER, "
                + ")";

PS: 在查询中使用变量名称而不是静态列名称是一种很好的做法。

希望有帮助:)

关于java - SQLite 数据库使我的应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44974554/

相关文章:

java - Java中整数字符串与字符串的比较

java - Android:如何从 MTP 读取 Java 应用程序中的文件

android - AndThen 在可完成完成之前执行

java - Hibernate、Spring - 事务

java - 使用 XMLStreamReader 转义字符

android - 有没有办法让布局动画化?[Android]?

java - Android Studio 闹钟 MP3 歌曲

sql - 在SQLite中评估连续的行对

ios - 核心数据 : delete all objects of an entity type, 即清空表

java - Android 应用程序正确读取字符串列,但不能正确读取第三个整数(sqlite)