android studio SQLite数据库创建表失败

在读《第一行代码》的时候照着敲的程序
程序没有报错,数据库也是成功建立的,但是里面没有表

相关代码:

public class MainActivity extends AppCompatActivity {

    private MyDatabaseHelper dbHelper;

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

        dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 1);
        Button btn_create_database = (Button) findViewById(R.id.create_database);

        btn_create_database.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    dbHelper.getWritableDatabase();
                }
        });
    }
}
public class MyDatabaseHelper extends SQLiteOpenHelper {

    public static final String CREATE_BOOK="create table Book("
            +"id integer primary key autoincrement,"
            +"author text,"
            +"price real,"
            +"pages integer,"
            +"name text)";

    private Context mContext;
    
    public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        mContext = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // 执行建表语句
        db.execSQL(CREATE_BOOK);
        Toast.makeText(mContext,"Create succeeded",Toast.LENGTH_SHORT).show();
    }

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

    }
}

查询时的报错信息:
图片说明

模拟器版本是6.0
尝试过添加获取动态权限的方法 没有起到作用
再尝试其他方法
如果有大佬看见能解决的请务必告诉我
如果解决后续会贴上解决方法

贴个我自己的解决方式:
https://blog.csdn.net/stringwing/article/details/102552281

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Android Studio 创建 SQLite 数据库格需要以下步骤: 1. 在项目的 `app` 目录下的 `java` 文件夹创建一个新的 `DatabaseHelper` 类,继承自 `SQLiteOpenHelper` 类。 ```java public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydatabase.db"; private static final int DATABASE_VERSION = 1; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String CREATE_TABLE = "CREATE TABLE mytable (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)"; db.execSQL(CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { String DROP_TABLE = "DROP TABLE IF EXISTS mytable"; db.execSQL(DROP_TABLE); onCreate(db); } } ``` 2. 在 `onCreate()` 方法创建表格,这里创建了一个名为 `mytable` 的格,包含三个字段:`id`、`name` 和 `age`。 ```java String CREATE_TABLE = "CREATE TABLE mytable (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)"; db.execSQL(CREATE_TABLE); ``` 3. 在 `onUpgrade()` 方法更新格,这里先删除了旧的格,再重新创建一个新的格。 ```java String DROP_TABLE = "DROP TABLE IF EXISTS mytable"; db.execSQL(DROP_TABLE); onCreate(db); ``` 4. 在需要使用数据库的地方,创建一个 `DatabaseHelper` 对象,并获取一个可写的数据库实例。 ```java DatabaseHelper dbHelper = new DatabaseHelper(context); SQLiteDatabase db = dbHelper.getWritableDatabase(); ``` 5. 在获取到数据库实例后,就可以使用各种 SQL 语句对数据进行操作了,例如插入数据、查询数据、更新数据、删除数据等等。 ```java // 插入数据 ContentValues values = new ContentValues(); values.put("name", "Tom"); values.put("age", 20); db.insert("mytable", null, values); // 查询数据 Cursor cursor = db.query("mytable", null, null, null, null, null, null); while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); Log.d("TAG", "id: " + id + ", name: " + name + ", age: " + age); } // 更新数据 ContentValues values = new ContentValues(); values.put("age", 21); db.update("mytable", values, "name = ?", new String[]{"Tom"}); // 删除数据 db.delete("mytable", "age < ?", new String[]{"20"}); ``` 以上就是在 Android Studio 创建 SQLite 数据库格的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值