SQLiteException没有这样的表:在编译ItemTable:Select_id,......从ItemTable [英] SQLiteException no such table:ItemTable while compiling: Select_id,.... from ItemTable

查看:279
本文介绍了SQLiteException没有这样的表:在编译ItemTable:Select_id,......从ItemTable的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经得到这样的错误在我的logcat有一段时间了。我尝试了很多事情就像在我的应用程序清空数据,未安装和重新安装我的应用程序,升级我的数据库版本,我甚至删除了我的项目,并创建了一个新的,但每次我跑我的应用程序,我总是得到这个错误。是否有人可以帮助我。

我试图给做的是我有一个活动的两个按钮添加项和视图项,每次我点击视图项目按钮,我得到这个错误。

在视图按钮是单击它必须表明我在数据库保存在ListView但是这不会发生,因为我的应用始终停止了数据,这显示在我的logcat中。

这是该数据应显示活动的图片

下面是我的logcat的:

 五月2日至9日:24:23.850:E / AndroidRuntime(8037):在com.system.inventorysystem.ViewProductItem.onCreate(ViewProductItem.java:46)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):致命异常:主要
5月2日至九日:46:59.810:E / AndroidRuntime(13150):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.system.inventorysystem / com.system.inventorysystem.ViewProductItem}:android.database.sqlite.SQLiteException :没有这样的表:ItemTable:,编译时:选择_id,ItemDescription,ItemQuantity,ItemUnit,ITEMPRICE FROM ItemTable
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.app.ActivityThread.access $ 600(ActivityThread.java:122)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1146)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.os.Handler.dispatchMessage(Handler.java:99)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.os.Looper.loop(Looper.java:137)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.app.ActivityThread.main(ActivityThread.java:4340)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在java.lang.reflect.Method.invokeNative(本机方法)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在java.lang.reflect.Method.invoke(Method.java:511)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在dalvik.system.NativeStart.main(本机方法)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):android.database.sqlite.SQLiteException:由没有造成这样的表:ItemTable:,编译时:选择_id,ItemDescription,ItemQuantity,ItemUnit,ITEMPRICE FROM ItemTable
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.database.sqlite.SQLiteCompiledSql.native_compile(本机方法)
。五月2日至9日:46:59.810:E / AndroidRuntime(13150):在android.database.sqlite.SQLiteCompiledSql<&初始化GT;(SQLiteCompiledSql.java:64)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361)
。五月2日至9日:46:59.810:E / AndroidRuntime(13150):在android.database.sqlite.SQLiteProgram<&初始化GT;(SQLiteProgram.java:127)
。五月2日至9日:46:59.810:E / AndroidRuntime(13150):在android.database.sqlite.SQLiteProgram<&初始化GT;(SQLiteProgram.java:94)
。五月2日至9日:46:59.810:E / AndroidRuntime(13150):在android.database.sqlite.SQLiteQuery<&初始化GT;(SQLiteQuery.java:53)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1564)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1449)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1405)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1485)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在com.system.inventorysystem.DBAdapter.getAllItemProduct(DBAdapter.java:108)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在com.system.inventorysystem.ViewProductItem.onCreate(ViewProductItem.java:48)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.app.Activity.performCreate(Activity.java:4465)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
5月2日至九日:46:59.810:E / AndroidRuntime(13150):... 11个

这是我的数据库适配器。

BDAdapter.java

 包com.system.inventorysystem;进口android.content.ContentValues​​;
进口android.content.Context;
进口android.database.Cursor;
进口android.database.SQLException;
进口android.database.sqlite.SQLiteDatabase;
进口android.database.sqlite.SQLiteOpenHelper;公共类DBAdapter {私有静态最后弦乐DATABASE_NAME =ProductItemdb;
私有静态最终诠释DATABASE_VERSION = 4;私有静态最后弦乐TABLE_PRODUCTITEM =ItemTable;
公共静态最后弦乐KEY_ItemID =_id;
公共静态最后弦乐KEY_ITEM_DESCRIPTION =ItemDescription;
公共静态最后弦乐KEY_ITEM_QUANTITY =ItemQuantity;
公共静态最后弦乐KEY_ITEM_UNIT =ItemUnit;
公共静态最后弦乐KEY_ITEM_PRICE =ITEMPRICE;
公共静态最后弦乐KEY_ITEM_DATE =日期/时间;
私有静态最后弦乐PRODUCTITEM_TABLE =创建表ItemTable(_id整数主键自动增量
        +ItemDescription文本不为空,ItemQuantity整数不为空,ItemUnit文本不为空,浮ITEMPRICE不为空,日期/时间日期时间DEFAULT CURRENT_TIMESTAMP);;私人最终上下文ourContext;
私人DatabaseHelper ourHelper;
私人SQLiteDatabase ourDatabase;公共DBAdapter(上下文CON){
    this.ourContext = CON;
    ourHelper =新DatabaseHelper(ourContext);
}静态类DatabaseHelper扩展SQLiteOpenHelper {
    公共DatabaseHelper(上下文的背景下){
        超(背景下,DATABASE_NAME,空,DATABASE_VERSION);
        // TODO自动生成构造函数存根
    }    @覆盖
    公共无效的onCreate(SQLiteDatabase DB){
        // TODO自动生成方法存根
        尝试{
        db.execSQL(PRODUCTITEM_TABLE);
        }赶上(的SQLException E){
            e.printStackTrace();
        }
    }    @覆盖
    公共无效onUpgrade(SQLiteDatabase分贝,INT oldVersion,诠释静态网页){
        // TODO自动生成方法存根
        db.execSQL(DROP TABLE IF EXISTS+ TABLE_PRODUCTITEM);
        的onCreate(DB);
    }
}//打开数据库
公共DBAdapter的open()抛出的SQLException {
    ourDatabase = ourHelper.getWritableDatabase();
    返回此;
}
//关闭数据库
公共无效的close(){
    ourHelper.close();
}//方法的项目产品
//插入数据
众长addItemProduct(字符串描述,诠释数量,字符串单位,浮动价)
{
    ContentValues​​ CV =新ContentValues​​();
    cv.put(KEY_ITEM_DESCRIPTION,说明);
    cv.put(KEY_ITEM_QUANTITY,数量);
    cv.put(KEY_ITEM_UNIT,股吧);
    cv.put(KEY_ITEM_PRICE,价格);
    返回ourDatabase.insert(TABLE_PRODUCTITEM,空,CV);
}
//更新数据
公共布尔updateItemProduct(长的itemId,字符串描述,诠释数量,字符串单位,浮动价)
{
    ContentValues​​ CV =新ContentValues​​();
    cv.put(KEY_ITEM_DESCRIPTION,的itemId);
    cv.put(KEY_ITEM_QUANTITY,数量);
    cv.put(KEY_ITEM_UNIT,股吧);
    cv.put(KEY_ITEM_PRICE,价格);
    返回ourDatabase.update(TABLE_PRODUCTITEM,CV,KEY_ItemID +=+的itemId,NULL)> 0;
}
//删除数据
公共布尔deleteItemProduct(长的itemId)
{
    返回ourDatabase.delete(TABLE_PRODUCTITEM,KEY_ItemID +=+的itemId,NULL)> 0;
}
//检索数据
公共光标getItemProduct(长的itemId)抛出的SQLException
{
    光标mCursor = ourDatabase.query(真,TABLE_PRODUCTITEM,新的String [] {KEY_ItemID,KEY_ITEM_DESCRIPTION,
            KEY_ITEM_QUANTITY,KEY_ITEM_UNIT,KEY_ITEM_PRICE},KEY_ItemID +=+的itemId,空,
            NULL,NULL,NULL,NULL);
    如果(mCursor!= NULL){
        mCursor.moveToFirst();
    }
    返回mCursor;
}
//获取所有数据
公共光标getAllItemProduct()
{
    返回ourDatabase.query(TABLE_PRODUCTITEM,新的String [] {KEY_ItemID,KEY_ITEM_DESCRIPTION,KEY_ITEM_QUANTITY,KEY_ITEM_UNIT,KEY_ITEM_PRICE},
            NULL,NULL,NULL,NULL,NULL);
}
}

和这里就是我试图从我的数据库中的列表视图中显示我的数据我的Java类。

ViewItemProduct.java

 包com.system.inventorysystem;进口android.annotation.Sup pressLint;
进口android.app.Activity;
进口android.content.Intent;
进口android.database.Cursor;
进口android.graphics.Typeface;
进口android.os.Bundle;
进口android.view.View;
进口android.widget.Button;
进口android.widget.ListView;
进口android.widget.SimpleCursorAdapter;
进口android.widget.TextView;公共类ViewProductItem扩展活动实现View.OnClickListener {DBAdapter ourDatabase;
字体CustomFont的;
TextView的view_item_txt;
键删除,更新;
ListView控件myList中;@燮pressLint(NewApi)@Override
保护无效的onCreate(捆绑savedInstanceState){
    // TODO自动生成方法存根
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.viewproductitem);    CustomFont的= Typeface.createFromAsset(getAssets(),字体/ EraserRegular.ttf);    view_item_txt =(的TextView)findViewById(R.id.view_item_tv);
    view_item_txt.setTypeface(CustomFont的);    删除=(按钮)findViewById(R.id.view_delete_button);
    delete.setTypeface(CustomFont的);
    delete.setOnClickListener(本);    更新=(按钮)findViewById(R.id.view_update_button);
    update.setTypeface(CustomFont的);
    update.setOnClickListener(本);    openDB();
    ourDatabase.open();    最后光标C = ourDatabase.getAllItemProduct();
    的String [] = ViewItemsNames新的String [] {DBAdapter.KEY_ItemID,DBAdapter.KEY_ITEM_DESCRIPTION,DBAdapter.KEY_ITEM_QUANTITY,DBAdapter.KEY_ITEM_UNIT,DBAdapter.KEY_ITEM_PRICE};
    INT [] = ViewItemsID新INT [] {R.id.view_item_id,R.id.view_item_desc,R.id.view_item_quantity,R.id.view_item_unit,R.id.view_item_price};
    最后SimpleCursorAdapter myCursorAdapter;
    myCursorAdapter =新SimpleCursorAdapter(getBaseContext(),R.layout.viewproduct_items,C,ViewItemsNames,ViewItemsID,0);
    myList中=(ListView控件)findViewById(R.id.view_item_listview);
    myList.setAdapter(myCursorAdapter);
}私人无效openDB(){
    ourDatabase =新DBAdapter(本);
    ourDatabase.open();
}@覆盖
公共无效的onClick(视图v){
    // TODO自动生成方法存根
    开关(v.getId())
    {
    案例R.id.view_delete_button:
        意图openDeleteItem =新意图(这一点,DeleteProductItem.class);
        this.startActivity(openDeleteItem);
        打破;
    案例R.id.view_update_button:
        意图openUpdateItem =新意图(这一点,UpdateProductItem.class);
        this.startActivity(openUpdateItem);
        打破;
    }
}
}

下面是我的XML文件。

viewitemproduct.xml

 <?XML版本=1.0编码=UTF-8&GT?;
<的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:背景=@绘制/ greenboard_background><的TextView
    机器人:ID =@ + ID / view_item_tv
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_alignParentTop =真
    机器人:layout_centerHorizo​​ntal =真
    机器人:layout_marginTop =45dp
    机器人:文字=@字符串/ view_item
    机器人:textAppearance =机器人:ATTR / textAppearanceLarge
    机器人:TEXTSIZE =35SP/>< ListView控件
    机器人:ID =@ + ID / view_item_listview
    机器人:layout_width =543dp
    机器人:layout_height =695dp
    机器人:layout_below =@ + ID / view_item_tv
    机器人:layout_centerHorizo​​ntal =真正的>
< /&的ListView GT;<按钮
    机器人:ID =@ + ID / view_delete_button
    机器人:layout_width =260dp
    机器人:layout_height =70dp
    机器人:layout_alignRight =@ + ID / view_item_listview
    机器人:layout_below =@ + ID / view_item_listview
    机器人:layout_marginTop =10dp
    机器人:文字=@字符串/ delete_item
    机器人:TEXTSIZE =40SP/><按钮
    机器人:ID =@ + ID / view_update_button
    机器人:layout_width =260dp
    机器人:layout_height =70dp
    机器人:layout_alignBaseline =@ + ID / view_delete_button
    机器人:layout_alignBottom =@ + ID / view_delete_button
    机器人:layout_alignLeft =@ + ID / view_item_listview
    机器人:文字=@字符串/ update_item
    机器人:TEXTSIZE =40SP/>< / RelativeLayout的>

这是我为我的列表视图内的项目texviews。

viewproduct_items.xml

 <?XML版本=1.0编码=UTF-8&GT?;
<的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:layout_width =match_parent
机器人:layout_height =match_parent><的TextView
    机器人:ID =@ + ID / view_item_id
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_marginLeft =3DP
    机器人:layout_alignParentTop =真
    机器人:文字=@字符串/货号
    机器人:textAppearance =机器人:ATTR / textAppearanceLarge
    机器人:TEXTSIZE =30sp/><的TextView
    机器人:ID =@ + ID / view_item_desc
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_alignParentTop =真
    机器人:layout_centerHorizo​​ntal =真
    机器人:文字=@字符串/ ITEM_DESC
    机器人:textAppearance =机器人:ATTR / textAppearanceLarge
    机器人:TEXTSIZE =30sp/><的TextView
    机器人:ID =@ + ID / view_item_quantity
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_marginLeft =3DP
    机器人:layout_below =@ + ID / view_item_desc
    机器人:文字=@字符串/ item_quantity
    机器人:textAppearance =机器人:ATTR / textAppearanceLarge
    机器人:TEXTSIZE =30sp/><的TextView
    机器人:ID =@ + ID / view_item_unit
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_alignBaseline =@ + ID / view_item_quantity
    机器人:layout_alignBottom =@ + ID / view_item_quantity
    机器人:layout_centerHorizo​​ntal =真
    机器人:文字=@字符串/ item_unit
    机器人:textAppearance =机器人:ATTR / textAppearanceLarge
    机器人:TEXTSIZE =30sp/><的TextView
    机器人:ID =@ + ID / view_item_price
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_marginLeft =3DP
    机器人:layout_below =@ + ID / view_item_unit
    机器人:文字=@字符串/ ITEM_PRICE
    机器人:textAppearance =机器人:ATTR / textAppearanceLarge
    机器人:TEXTSIZE =30sp/>< / RelativeLayout的>


解决方案

您在你的创建表的语法问题日期/时间不是一个有效的列名 - 摆脱 /

语法问题被隐藏,因为的尝试 - SQLiteOpenHelper 的onCreate()。如果有问题,的onCreate()必须抛出异常。否则 SQLiteOpenHelper 认为一切正常。

固定上述两个问题,要么卸载应用程序/清除其数据或撞了数据库版本后,使的onCreate()被再次调用。

I've been getting this errors in my logcat for a while now. I tried a lot of things like clearing the data in my app, un-installing and re-installing my app, upgrading my DB version, I even deleted my project and created a new one but everytime i run my app i always get this error. Can someone please help me.

What I'm trying to to do is i have two buttons in an activity add item and view item, everytime i click the view item button I get this error.

When the view button is click it must show the data that I save in my database in a listview but that does not happen because my app always stopped and this show in my logcat.

This is the Image of the activity where the data should display

Here is my logcat:

02-09 05:24:23.850: E/AndroidRuntime(8037):     at com.system.inventorysystem.ViewProductItem.onCreate(ViewProductItem.java:46)
02-09 05:46:59.810: E/AndroidRuntime(13150): FATAL EXCEPTION: main
02-09 05:46:59.810: E/AndroidRuntime(13150): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.system.inventorysystem/com.system.inventorysystem.ViewProductItem}: android.database.sqlite.SQLiteException: no such table: ItemTable: , while compiling: SELECT _id, ItemDescription, ItemQuantity, ItemUnit, ItemPrice FROM ItemTable
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.app.ActivityThread.access$600(ActivityThread.java:122)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.os.Looper.loop(Looper.java:137)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.app.ActivityThread.main(ActivityThread.java:4340)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at java.lang.reflect.Method.invokeNative(Native Method)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at java.lang.reflect.Method.invoke(Method.java:511)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at dalvik.system.NativeStart.main(Native Method)
02-09 05:46:59.810: E/AndroidRuntime(13150): Caused by: android.database.sqlite.SQLiteException: no such table: ItemTable: , while compiling: SELECT _id, ItemDescription, ItemQuantity, ItemUnit, ItemPrice FROM ItemTable
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:127)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:94)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:53)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1564)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1449)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1405)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1485)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at com.system.inventorysystem.DBAdapter.getAllItemProduct(DBAdapter.java:108)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at com.system.inventorysystem.ViewProductItem.onCreate(ViewProductItem.java:48)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.app.Activity.performCreate(Activity.java:4465)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
02-09 05:46:59.810: E/AndroidRuntime(13150):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
02-09 05:46:59.810: E/AndroidRuntime(13150):    ... 11 more

This is my Database Adapter.

BDAdapter.java

package com.system.inventorysystem;

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

public class DBAdapter {

private static final String DATABASE_NAME = "ProductItemdb";
private static final int DATABASE_VERSION = 4;

private static final String TABLE_PRODUCTITEM = "ItemTable";
public static final String KEY_ItemID = "_id";
public static final String KEY_ITEM_DESCRIPTION = "ItemDescription";
public static final String KEY_ITEM_QUANTITY = "ItemQuantity";
public static final String KEY_ITEM_UNIT = "ItemUnit";
public static final String KEY_ITEM_PRICE = "ItemPrice";
public static final String KEY_ITEM_DATE = "Date/Time";
private static final String PRODUCTITEM_TABLE = "create table ItemTable (_id integer primary key autoincrement, "
        + " ItemDescription text not null, ItemQuantity integer not null, ItemUnit text not null, ItemPrice float not null, Date/Time datetime DEFAULT CURRENT_TIMESTAMP);";

private final Context ourContext;
private DatabaseHelper ourHelper;
private SQLiteDatabase ourDatabase;

public DBAdapter(Context con) {
    this.ourContext = con;
    ourHelper = new DatabaseHelper(ourContext);
}

static class DatabaseHelper extends SQLiteOpenHelper { 
    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        try {
        db.execSQL(PRODUCTITEM_TABLE);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_PRODUCTITEM);
        onCreate(db);
    }
}

//open Database
public DBAdapter open() throws SQLException {
    ourDatabase = ourHelper.getWritableDatabase();
    return this;
}
//close database
public void close() {
    ourHelper.close();
}

//METHODS FOR ITEM PRODUCTS
//insert data
public long addItemProduct(String description, int quantity, String unit, Float price)
{
    ContentValues cv = new ContentValues();
    cv.put(KEY_ITEM_DESCRIPTION, description);
    cv.put(KEY_ITEM_QUANTITY, quantity);
    cv.put(KEY_ITEM_UNIT, unit);
    cv.put(KEY_ITEM_PRICE, price);
    return ourDatabase.insert(TABLE_PRODUCTITEM, null, cv);
}
//update data
public boolean updateItemProduct(long itemId, String description, int quantity, String unit, Float price)
{
    ContentValues cv = new ContentValues();
    cv.put(KEY_ITEM_DESCRIPTION, itemId);
    cv.put(KEY_ITEM_QUANTITY, quantity);
    cv.put(KEY_ITEM_UNIT, unit);
    cv.put(KEY_ITEM_PRICE, price);
    return ourDatabase.update(TABLE_PRODUCTITEM, cv, KEY_ItemID + "=" + itemId, null) > 0;
}
//delete data
public boolean deleteItemProduct(long itemId)
{
    return ourDatabase.delete(TABLE_PRODUCTITEM, KEY_ItemID + "=" + itemId, null) > 0;
}
//retrieve data
public Cursor getItemProduct(long itemId) throws SQLException
{   
    Cursor mCursor = ourDatabase.query(true, TABLE_PRODUCTITEM, new String[] {KEY_ItemID, KEY_ITEM_DESCRIPTION, 
            KEY_ITEM_QUANTITY, KEY_ITEM_UNIT, KEY_ITEM_PRICE}, KEY_ItemID + "=" + itemId, null,
            null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}
//retrieve all data
public Cursor getAllItemProduct()
{
    return ourDatabase.query(TABLE_PRODUCTITEM, new String[] {KEY_ItemID, KEY_ITEM_DESCRIPTION, KEY_ITEM_QUANTITY, KEY_ITEM_UNIT, KEY_ITEM_PRICE}, 
            null, null, null, null, null);
}
}

And here is my java class where I was trying to display my Data in listview from my Database.

ViewItemProduct.java

package com.system.inventorysystem;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;

public class ViewProductItem extends Activity implements View.OnClickListener{

DBAdapter ourDatabase;
Typeface customFont;
TextView view_item_txt;
Button delete,update;
ListView myList;

@SuppressLint("NewApi") @Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.viewproductitem);

    customFont = Typeface.createFromAsset(getAssets(), "fonts/EraserRegular.ttf");

    view_item_txt = (TextView)findViewById(R.id.view_item_tv);
    view_item_txt.setTypeface(customFont);

    delete = (Button)findViewById(R.id.view_delete_button);
    delete.setTypeface(customFont);
    delete.setOnClickListener(this);

    update = (Button)findViewById(R.id.view_update_button);
    update.setTypeface(customFont);
    update.setOnClickListener(this);

    openDB();
    ourDatabase.open();

    final Cursor c = ourDatabase.getAllItemProduct();
    String[] ViewItemsNames = new String[] {DBAdapter.KEY_ItemID,DBAdapter.KEY_ITEM_DESCRIPTION,DBAdapter.KEY_ITEM_QUANTITY,DBAdapter.KEY_ITEM_UNIT,DBAdapter.KEY_ITEM_PRICE};
    int[] ViewItemsID = new int[] {R.id.view_item_id,R.id.view_item_desc,R.id.view_item_quantity,R.id.view_item_unit,R.id.view_item_price};
    final SimpleCursorAdapter myCursorAdapter;
    myCursorAdapter = new SimpleCursorAdapter(getBaseContext(),R.layout.viewproduct_items, c, ViewItemsNames, ViewItemsID,0);
    myList = (ListView)findViewById(R.id.view_item_listview);
    myList.setAdapter(myCursorAdapter);
}

private void openDB() {
    ourDatabase = new DBAdapter(this);
    ourDatabase.open();
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch(v.getId())
    {
    case R.id.view_delete_button:
        Intent openDeleteItem = new Intent(this,DeleteProductItem.class);
        this.startActivity(openDeleteItem);
        break;
    case R.id.view_update_button:
        Intent openUpdateItem = new Intent(this,UpdateProductItem.class);
        this.startActivity(openUpdateItem);
        break;
    }
}
}

Here is my xml file.

viewitemproduct.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/greenboard_background" >

<TextView
    android:id="@+id/view_item_tv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="45dp"
    android:text="@string/view_item"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textSize="35sp" />

<ListView
    android:id="@+id/view_item_listview"
    android:layout_width="543dp"
    android:layout_height="695dp"
    android:layout_below="@+id/view_item_tv"
    android:layout_centerHorizontal="true" >
</ListView>

<Button
    android:id="@+id/view_delete_button"
    android:layout_width="260dp"
    android:layout_height="70dp"
    android:layout_alignRight="@+id/view_item_listview"
    android:layout_below="@+id/view_item_listview"
    android:layout_marginTop="10dp"
    android:text="@string/delete_item"
    android:textSize="40sp" />

<Button
    android:id="@+id/view_update_button"
    android:layout_width="260dp"
    android:layout_height="70dp"
    android:layout_alignBaseline="@+id/view_delete_button"
    android:layout_alignBottom="@+id/view_delete_button"
    android:layout_alignLeft="@+id/view_item_listview"
    android:text="@string/update_item"
    android:textSize="40sp" />

</RelativeLayout>

And here is my texviews for the item inside my Listview.

viewproduct_items.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
    android:id="@+id/view_item_id"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="3dp"
    android:layout_alignParentTop="true"
    android:text="@string/itemno"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textSize="30sp" />

<TextView
    android:id="@+id/view_item_desc"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:text="@string/item_desc"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textSize="30sp" />

<TextView
    android:id="@+id/view_item_quantity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="3dp"
    android:layout_below="@+id/view_item_desc"
    android:text="@string/item_quantity"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textSize="30sp" />

<TextView
    android:id="@+id/view_item_unit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/view_item_quantity"
    android:layout_alignBottom="@+id/view_item_quantity"
    android:layout_centerHorizontal="true"
    android:text="@string/item_unit"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textSize="30sp" />

<TextView
    android:id="@+id/view_item_price"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="3dp"
    android:layout_below="@+id/view_item_unit"
    android:text="@string/item_price"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textSize="30sp" />

</RelativeLayout>

解决方案

You have a syntax problem in your create table. Date/Time is not a valid column name - get rid of the /.

The syntax problem is hidden because of the try-catch in SQLiteOpenHelper onCreate(). If there is a problem, onCreate() must throw an exception. Otherwise SQLiteOpenHelper thinks everything is ok.

After fixing the two problems above, either uninstall your app/clear its data or bump up the database version so that onCreate() gets called again.

这篇关于SQLiteException没有这样的表:在编译ItemTable:Select_id,......从ItemTable的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆