Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite数据库的基本问题。android记事本教程_Android_Database_Sqlite - Fatal编程技术网

SQLite数据库的基本问题。android记事本教程

SQLite数据库的基本问题。android记事本教程,android,database,sqlite,Android,Database,Sqlite,这是一个非常基本的问题。我只是想了解SQLite数据库是如何工作的。所以,我要做的是:在下面的代码部分(摘自记事本教程第3个练习),我将KEY_TITLE更改为KEY_NAME,将我找到的所有地方的TITLE更改为NAME。应用程序崩溃。为什么会发生这种情况 public static final String KEY_TITLE = "title"; //change to: public static final String KEY_NAME = "name"; public st

这是一个非常基本的问题。我只是想了解SQLite数据库是如何工作的。所以,我要做的是:在下面的代码部分(摘自记事本教程第3个练习),我将KEY_TITLE更改为KEY_NAME,将我找到的所有地方的TITLE更改为NAME。应用程序崩溃。为什么会发生这种情况

public static final String KEY_TITLE = "title";
//change to:     public static final String KEY_NAME = "name";
public static final String KEY_BODY = "body";
public static final String KEY_ROWID = "_id";

private static final String TAG = "NotesDbAdapter";
private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;

/**
 * Database creation sql statement
 */
private static final String DATABASE_CREATE =
    "create table notes (_id integer primary key autoincrement, "
    + "title text not null, body text not null);";
/*改为: 私有静态最终字符串数据库\u创建= “创建表注释(_idinteger主键自动递增,” +“名称文本不为空,正文文本不为空);”;
*/

如果您复制了堆栈跟踪(使用logcat/DDMS)或复制了整个SQLiteDBAdapter,这将非常有用,但只要看看您发布的内容,您肯定会遇到一个问题,即在sqlite database create语句中使用了错误的字段名

“标题”字段应重命名为“名称”,以匹配更改的列名

更改:

private static final String DATABASE_CREATE =
"create table notes (_id integer primary key autoincrement, "
+ "title text not null, body text not null);";

我还倾向于在create语句中使用statics本身,因此可以像下面这样编写:

    private static final String DATABASE_CREATE =
"create table notes (" + KEY_ROWID + " integer primary key autoincrement, "
+ KEY_NAME + " text not null, " + KEY_BODY + " text not null);";

然后您可以经常更改名称,而不会遇到数据库创建破坏。

我想问题是。。您正在使用KEY_NAME=“NAME”。。。现在,就我在代码中看到的情况来看,您并没有创建一个包含“name”冒号的表。现在,您可能再次尝试访问name列的值,该列实际上不在表中排序,所以它会引发异常。但是,看看日志(如果你在这里发帖的话)可以为这个问题提供更好的答案


干杯

日志中是否有错误?程序崩溃前有错误吗?我就是这么做的。但它还是崩溃了。我被难住了。我明白了。我从手机上卸载了应用程序,并重新安装了它。现在它可以工作了。你知道为什么会这样吗?可能应用程序已经创建了一个不同列的表。所以,当您访问该表时,它抛出了错误。当您删除并重新安装时。。它刚刚创建了一个新表…带有你想要的颜色。我想这可能就是原因
    private static final String DATABASE_CREATE =
"create table notes (" + KEY_ROWID + " integer primary key autoincrement, "
+ KEY_NAME + " text not null, " + KEY_BODY + " text not null);";