首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Sqlite "Author is not a Column of your database“

Android Sqlite "Author is not a Column of your database“
EN

Stack Overflow用户
提问于 2013-07-25 16:21:17
回答 3查看 103关注 0票数 0

您好,我正尝试为我的应用程序构建一个sqlite数据库,但它返回错误"(1)表文章没有名为author的列“

我知道问题的本质,但我现在已经好几个小时都找不到错误了。

代码语言:javascript
复制
 package com.example.newyork;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHandler extends SQLiteOpenHelper{

    //Database Initialize
    private static final int DATABASE_VERSION = 6;
    private static final String DATABASE_NAME = "NewYorkApplication";

    //Table 'Articles' name definition
    private static final String TABLE_ARTICLES = "articles";

    //Table 'Articles' Column Names
    private static final String KEY_ID = "key";
    private static final String KEY_TITLE = "title";
    private static final String KEY_TEXT = "text";
    private static final String KEY_AUTHOR = "author";
    private static final String KEY_DATE = "date";


    public DatabaseHandler(Context context){
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    //Creating Tables 
    @Override
    public void onCreate(SQLiteDatabase db){
        String CREATE_ARTICLES_TABLE = "CREATE TABLE " + TABLE_ARTICLES + "("
                + KEY_ID + " INTEGER PRIMARY KEY ,"
                + KEY_TITLE + " TEXT,"
                + KEY_TEXT + " TEXT," 
                + KEY_AUTHOR + "TEXT,"
                + KEY_DATE + "TEXT"+  ")";
        db.execSQL(CREATE_ARTICLES_TABLE);
    }

    // Upgrading database
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_ARTICLES);

        // Create tables again
        onCreate(db);
    }

    //Adding Article
    public void addArticle(Article article){

        //Get Database and initialize contentValues
        SQLiteDatabase db = getWritableDatabase();
        ContentValues values = new ContentValues();

        //Put new values into Values
        values.put(KEY_TITLE, article.getTitle());
        values.put(KEY_TEXT, article.getText());
        values.put(KEY_DATE, article.getDate());
        values.put(KEY_AUTHOR, article.getAuthor());    

        //Insert table row
        db.insert(TABLE_ARTICLES, null, values);
        db.close();
    }

    public Article getArticle(int id) {

        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = db.query(TABLE_ARTICLES, new String[] { KEY_ID,
                KEY_TITLE, KEY_AUTHOR,KEY_TEXT,KEY_DATE }, KEY_ID + "=?",
                new String[] { String.valueOf(id) }, null, null, null, null);
        if (cursor != null)
            cursor.moveToFirst();

        Article article = new Article(cursor.getString(1),cursor.getString(2),cursor.getString(4),cursor.getString(3));
        // return contact
        return article;
    }

}
EN

回答 3

Stack Overflow用户

发布于 2013-07-25 16:23:41

确保在列名和类型之间放置一个空格:

代码语言:javascript
复制
+ KEY_AUTHOR + "TEXT,"
+ KEY_DATE + "TEXT"+ 

应该是:

代码语言:javascript
复制
+ KEY_AUTHOR + " TEXT,"
+ KEY_DATE + " TEXT"+ 

否则,您的语句将如下所示:

代码语言:javascript
复制
CREATE TABLE articles(key INTEGER PRIMARY KEY , title TEXT, text TEXT, authorTEXT,dateTEXT);

另外,如果你最近一直在积极地改变周围的东西,确保你实际上正在使用你认为你正在使用的db版本。

票数 0
EN

Stack Overflow用户

发布于 2013-07-25 16:24:35

在KEY_AUTHOR和KEY_DATE的"TEXT“前面忘记了空格

票数 0
EN

Stack Overflow用户

发布于 2013-07-25 16:27:00

我认为您的问题是在列类型之前缺少空格,试试这个:

代码语言:javascript
复制
String CREATE_ARTICLES_TABLE = "CREATE TABLE " + TABLE_ARTICLES + "("
                + KEY_ID + " INTEGER PRIMARY KEY ,"
                + KEY_TITLE + " TEXT,"
                + KEY_TEXT + " TEXT," 
                + KEY_AUTHOR + " TEXT,"
                + KEY_DATE + " TEXT"+  ")";
        db.execSQL(CREATE_ARTICLES_TABLE);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17852689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档