使用Android中的SQLite建立一个数据库,加了一张Book表,增加一个表,升级数据库失败 5C

使用Android中的SQLite建立一个数据库BookStore,加了一张Book表,然后我要增加一个Category表,按照《第一行代码》中的6.4.2所示代码写完后,点击App后直接闪退。(我用的是Andro Studio3.1版本,使用真机开发,系统Androi8.1)。代码如下

主活动代码:
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,2);
    Button createDatabase=(Button)findViewById(R.id.create_database);
    createDatabase.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dbHelper.getWritableDatabase();
        }
    });
}

}

定义一个数据库类MyDatabaseHelper继承SQLiteOpenHelper
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)";

public static final String CREATE_CATEGORY="create table Category("
        +"id integer primary key autoincrement"
        +"category_name text"
        +"category_code integer)";

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);
    db.execSQL(CREATE_CATEGORY);
    Toast.makeText(mContext,"Create succeeded",Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
    db.execSQL("drop table if exists Book");
    db.execSQL("drop table if exists Category");
    onCreate(db);

}

}

3个回答

public static final String CREATE_CATEGORY="create table Category("
+"id integer primary key autoincrement,"
+"category_name text,"
+"category_code integer)";

目测缺少2个逗号,是不是有别的问题,你调试下。

升级的方法里执行onCreatee()方法,你应该在onCreate方法里打些日志,看它会不会重复执行 db.execSQL(CREATE_BOOK);
db.execSQL(CREATE_CATEGORY); 我升级数据库在 onUpgrade()方法中都不会执行 onCreate(db); 可能会报表重复创建之类的问题

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

public static final String CREATE_CATEGORY="create table Category("
+"id integer primary key autoincrement,"
+"category_name text,"
+"category_code integer)";

            把代码替换下
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
《SQLite》在SQLite数据库中创建一张“表”
在SQLite数据库中创建一张“表”     在SQLite Exoert professional软件中有两种方法可以创建表,一种是利用Design创建,另外一种是直接使用SQL语句创建。   方法一:利用Design创建     1. 选中数据库右键,点击“New Table” ⟶ 2. 添加列:点击“Design”,点击“Insert”,在弹出的对话框内设...
android SQLite 一个数据库创建多个表
android SQLite 一个数据库创建多个表,并对指定的表进行增删改查操作,具体使用SQLite数据库时,可以将这个作为模版,在此基础上增加或减少数据库及表,操作起来非常的方便。
android sqlite 升级数据库
1.创建表 String sql = "CREATE TABLE IF NOT EXISTS " + “表名” + " (_id INTEGER PRIMARY KEY AUTOINCREMENT," + "列名 TEXT," + "列名 INT)"; db.execSQL(sql); 2.表新增列 String sql = "ALTER TABLE " ...
Android 代码实现查看SQLite数据库中的表
前言以前写PHP的时候,内置了print_r()和var_dump()两个函数用于打印输出任意类型的数据内部结构,现在做Android的开发,发现并没有这种类似的函数,对于数据库的查看很不方便,于是就写了一下查看数据库表的方法代码。代码实现import java.util.Arrays; import android.app.Activity; import android.database.Cur
使用工具 查看 sqlite数据库中的表
1  打开 android studio tools---->Android--->android device monitor        data-->data>找到你的项目文件夹--databases--找到数据库 AwardItemStore.db       选中右上角  pull a file from  the device   导出数据库文件 2
同步两个数据库中的一个表,链接数据库如何建立
谢谢,步知道如何设定参数,假定一台数据库地址为“adfd”,数据库名为“db”
数据库中的表创建失败
[img=https://img-bbs.csdn.net/upload/201610/05/1475671191_973837.png][/img]rnrnrnrnError Code : 1005rnCan't create table 'db_shop.xx_artgallery' (errno: 150)rnrnrn大哥们什么原因呀,给小弟看看。。。
备份数据库中的一个表
如果备份一个数据库中的一张表rn[color=#FF0000]注意:表结构和表内容都要备份的[/color]rn在线等,急。。。。。
Android数据库(SQLite)框架(2)——LitePal升级表
Android数据库(SQLite)框架(2)——LitePal升级表
数据库使用中一个表不能用了
我的系统最近一段时间总是出错,说是“Sql Server ODBC 链接通讯错误”,确定系统没问题,数据库中的一个表出了问题,这个表没办法操作了,这是怎么回事呢??问题出在哪里???哪位遇见过这种问题帮帮忙吧!
如何使用VB在Access97的数据库中建立一个表?
谢谢
关于建立一个合理的数据库的表的关系!!??
各位高手、前辈们:rn 我现在正在想设计一个图书管理系统,现在已经建了几张表:rn图书信息表:isbn ,书名,作者,出版社,进货总量,价格 rn读者信息表:证件号,证件类型,读者编号,姓名,出生日期,年龄,地址,电话,办卡日期rn预约表:读者编号,读者姓名,预约日期,预约书籍rn借阅信息表:读者编号,借阅书目,借书量,借书日期,还书日期,到期日期rnrn请问这几张表如何建关系,为什么要这样建?rnrn请各位高手、前辈们,指点指点我这个木鱼脑吧!谢谢!
数据库新手,求助建立一个这样的表?
建立一个表test(a,b,c,d),约束如下:rn1.字段a是自增字段,主码。rn2.字段c要求大于0rn3.字段d是计算字段。d=a+b-crn兄弟的数据库不好,用SQL语句建立该表该怎么写啊?rn谢谢了先。rn谁能提供关于SQL语句的电子书啊,能传一下吗。rnconsel@163.com
Android Sqlite数据库的升级(一)
Android Sqlite数据库的升级 参考博客:http://blog.sina.com.cn/s/blog_6400e5c50101mgu4.html package com.db.demo; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.dat
Android Sqlite数据库的升级(二)
Android Sqlite数据库的升级(二)——修改字段属性 Sqlite 仅仅支持 ALTER TABLE 语句的一部分功能,我们可以用 ALTER TABLE 语句来更改一个表的名字,也可向表中增加一个字段(列),但是我们不能删除一个已经存在的字段,或者更改一个已经存在的字段的名称、数据类型、限定符等等。 那么当我们需要修改一个字段A的属性,比如从int升级到long类型,有如下
3.数据库与表的建立
利用html5的及时推送技术与php+mysql+ajax一些技术完成一款在线聊天室实例,供大家练习。
数据库的表建立
数据库图书管理系统的建表,几个基本表的建立。aaa
数据库建立学生管理系统的表
本文件实现了利用access 建立了一学生管理系统的表
怎样建立一张主键自动增加的表
怎样建立一张主键自动增加的表,我不会啊rn在access中好像就很方便rn在sql server中部知道怎样做,请大家告诉我rn
Android 数据库SQLite升级降级
前言 作业系统的新版本开发结束,由于后台的习题信息的数据字段和个数改变了,所以Android本地的数据库表字段也需要做相应调整。记录下关于数据库的升级和降级相关知识。超简单 。:) 一,SQLite SQLite是Android内置的一个轻量级的关系型数据库。数据库嘛,就是用来存储数据的。在什么情况下,Android开发需要用到数据库存储数据呢? 需要存储大量的结构化的数据,使用关系型数据...
综合应用建立数据库和建立表
本课程全面介绍了sqlserver2008系统的体系架构和功能。本课程以章节的形式,共13章,逐步学习,内容包括sqlserver2008基础知识、t-sql语言、数据库和表、select查询、视图、索引和游标、存储过程与触发器、数据库的备份与还原、安全与权限等。
如何用一个数据库的表修改另一个数据库中的表
access A 有表Brnaccess c 有表DrnB和D结构一样rn想用B来更新D中内容rn如何操作呢
Android SQLite数据库—表已建好
本章节接上一篇继续讲述Android原生sqlite数据库操作(提前建好表) 1.首先准备一张已经建好的表(这里就不赘述了)将其复制到src文件夹下如下图 2.创建工具类将src下的数据库文件复制到data/data/应用程序包名/files/xxxx.db package com.wjn.androiddbdemo.base; import an...
Android 数据库sqlite一次创建多个表?
我想在数据库中一次性建立多个表,可是为什么只能建立第一个,运行到第二个的时候程序就强退呢?rnpublic class DatabaseHelper extends SQLiteOpenHelperrn public DatabaseHelper(Context context, String name, CursorFactory factory,rn int version) rn //必须通过super调用父类当中的构造函数rn super(context, name, factory, version);rn // TODO Auto-generated constructor stubrn rn @Overridern public void onCreate(SQLiteDatabase db) rn // TODO Auto-generated method stubrn db.execSQL("create table table1 (name varchar(20),pw varchar(20))");rn db.execSQL("create table table2(id int,a long,b long,c long)");rn db.execSQL("create table table3(id int,a long,b long,c long)");rn db.execSQL("create table table4(id int,a long,b long,c long)");rn db.execSQL("create table table5(id int,a long,b long,c long)");rn db.execSQL("create table table6(id int,a long,b long,c long)");rn rn @Overridern public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) rn // TODO Auto-generated method stub rn rnrn
如何将一个数据库中一个表的数据追加到别一个数据库的一个表中
USE OneToFivernINSERT SimulationUserrn(rn UserName,rn UserTel,rn Mobile,rn PostCode,rn Email,rn Address,rn Flags,rn DoDatern)rnUSE tjhuangjinrnSELECTrn CustomerName AS UserName,rn CompanyTel AS UserTel,rn MoveTel AS Mobile,rn PostalCode AS PostCode,rn Email,rn Address,rn CASE rn WHEN(State='已经发邮件')then 'true' else 'false' end ,rn date AS DoDaternFROMrn Simulatern这个会提示USE tjhuangjin有讲法错误
如何打开一个数据库中的一个表?
数据库名称: MyDBrn表名称:UserIDrnrnCDatabase::OpenEx(参数)rnrn参数应该是怎么样的?rn试过MyDB,但只是打开了数据库rn没打开表rn要打开表应该怎么做?rn谢谢rn
Android中Sqlite数据库的使用
1.在adb shell 下的Sqlite3的一些常用命令: sqlite3【要创建的数据库】:如果数据库不存在就进行创建,如果存在就打开已有的数据库 .databases 用来检查它是否在数据库列表中 .tables 查看数据库中所有的表 .schema 【表名】查看表的信息 2.Sqlite中的sql语句操作(⊙﹏⊙)我不太喜欢大写,所以sql语句能小写的我都小写啦……创建一张表:crea
Android中使用Sqlite数据库
上代码,慢慢解释。关键点:SQLiteOpenHelper, 注意点:SQLite和sql一样,修改删除返回的是修改的行数,如果需要外部应用调用而且需要实现自增,id需要用_id ============================================================================================== public c
android中使用数据库Sqlite
1.先创建一个类MyOpenHelperpackage zyl.cn.demo1019.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.widget.T...
android中sqlite数据库的使用
用一个Demo程序完成sqlite数据库的增删查改。创建数据库和表android中使用SQLiteDatabase需要先实现SQLiteOpenHelper类:public class MyDatabaseHelper extends SQLiteOpenHelper { public static final String CREATE_BOOK = "create table " + Co
在android中使用SQLite数据库
SQLite数据库以其轻量、体积小等特点,使其在开发中运用的非常广泛,在前面的博客中我也介绍过在Cocos2d-x中使用SQLite数据库,这篇博客是介绍在Android中使用SQLite数据库,Android中直接集成了SQLite数据库,使用起来非常方便,不需要向Cocos2d-x中那样添加外部文件 我将使用SQLite数据库实现一个下图所示的效果,打开app后会弹出下图所示的界面
Android 中使用 SQLite 数据库
一、Android 中SQLite 介绍 Android 在运行时(run-time)集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。 由于JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,会消耗太多的系统资源,对于手机这种内存受限设备来说并不合适。因此Android 提供了一些...
Android中SQLite数据库使用
在Android中使用SQLite,包括简单的“增”,“删”,“改”,“查”操作
android 下创建一个sqlite数据库
结构目录: 1.创建数据库,创建PersonSQLiteOpenHeaper类 继承 SQLiteOpenHeaper* 创建实现SQLiteOpenHelper的子类PersonSQLiteOpenHeaperpackage com.itheima.db;import android.content.Context; import android.database.sqlite.SQLi
请教一个android使用SQLite数据库的问题
我正在做一个项目,大致是这么一个情况,有一个传感器会不定时地采集数据上传到后台服务器中,我现在就是做一个个app,传感器每给服务器上传一个数据,我就要取过来存到数据库里以便画图。但是我今天在创建数据库的时候,发现了六种MODE_,我想请问一下六种的区别,以及想要实现我这种功能,应该使用哪一个模式?[img=https://img-bbs.csdn.net/upload/201608/26/1472225835_460797.png][/img]
Android编程之Sqlite数据库的建立与使用
主Activity: package edu.hrbeu.SimplePreferenceDemo; import edu.hrbue.SimplePreferenceDemo.R; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException;
数据库视图:一张虚拟的表
navicat中,查询--》新建查询里面创建,而不是视图-》新建视图语法结构:--创建视图--  create view v_name as select * from user --从视图中检索数据--  select * from v_name ;  --删除视图--  drop view v_name ;  ...
SQLite 3创建 数据库 和 表
新学SQLite 3在Android中的应用,下载了SQLite却不知从何下手,记载一下自己探索的过程,已被不时之需。 step 1: 下载SQLite 3, 这一步比较简单,免安装,免配置环境。             可以从百度里下载一个sqlite,解压后无需安装,在解压目录里有个sqlite.exe 即可。 step 2: windows运行调出 cmd.exe,并知道sqlite....
Android Sqlite数据库的使用
创建数据库 新建一个Android工程,再创建一个类MySqlLite继承SQLiteOpenHelper创建成功后,打开MysqlList.java文件,你会看到有报错。使用Alt+Enter键选择Implement Methods ,实现接口onCreate和onUpgrade这时候依旧会报错,继续Alt+Enter选择 第一个,第一个 最终的代码如下 public class Mysql
Android:使用SQLite数据库
        Android内置的轻量级数据库SQLite,是Android五种数据存储方式中的一种。Android提供了类SQLiteDatabase,里面封装了一些数据库的API,可以用于对数据库进行增、删、改、查。Android还提供了类SQLiteOpenHelper,是SQLiteDatabase的辅助类,主要用于创建数据库,并对数据库的版本进行管理。该类是一个抽象类,使用时一般定义一...
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制