Android 2表:错误代码= 1,msg =没有这样的表:valuetable

时间:2014-05-07 08:19:17

标签: android android-sqlite

你好我需要一些帮助我的android数据库,因为我搜索了很多应该是什么问题,但没有任何帮助,我希望有人可以帮助我在这种情况下(我是一个初学的Android开发人员。)第一个工作只是有价值的工作没有。 这是我的代码:

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.Cursor;
import android.database.SQLException;
public class DbConstans
{   
private static final String DATABASE_NAME="mydatabase";
public static final int DATABASE_VERSION=2;

SQLiteDatabase db;
Context ctx;
DatabaseHelper dbhelper;
MyValues mvhelper;

public DbConstans(Context context)
{
    this.ctx=context;
    dbhelper=new DatabaseHelper(ctx);
    mvhelper=new MyValues(ctx);

}

public class DatabaseHelper extends SQLiteOpenHelper
{
    public static final String DATABASE_TABLE="logintable";
    public static final String KEY_ID="id";
    public static final String KEY_USERNAME="username";
    public static final String KEY_PASSWORD="password";
    public static final String TABLE_CREATE="create table "+ DATABASE_TABLE +" ( "+ KEY_ID +
             " integer primary key autoincrement, " + KEY_USERNAME + " text not null, " + KEY_PASSWORD
              + " text not null);";
public DatabaseHelper(Context context)
{
super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
    @Override
    public void onCreate(SQLiteDatabase db) throws SQLException {

        try{
            db.execSQL(TABLE_CREATE);
        }catch(SQLException e)
        {
            e.printStackTrace();
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXIST logintable");
        onCreate(db);

    }
    }

    public class MyValues extends SQLiteOpenHelper
    {
        public static final String DATABASE_NAME2="valuetable";
        public static final String KEY_ID1="id";
        public static final String KEY_FMON="money";

        public static final String TABLE_CREATE2="create table " + DATABASE_NAME2 + 
                " ( " + KEY_ID1 + " integer primary key autoincrement, " + KEY_FMON +
                 " text not null);";

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

        }

        @Override
        public void onCreate(SQLiteDatabase db) throws SQLException{

            try{
                db.execSQL(TABLE_CREATE2);
            }catch(SQLException e)
            {
                e.printStackTrace();
            }   
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion,
                int newVersion) {
            db.execSQL("DROP TABLE IF EXIST"+TABLE_CREATE2);
            onCreate(db);
        }
        }

    public DbConstans open()
    {
        dbhelper=new DatabaseHelper(ctx);
        db=dbhelper.getWritableDatabase();
    mvhelper=new MyValues(ctx);
        db=mvhelper.getWritableDatabase();
        return this;
    }

    public void close()
    {
        dbhelper.close();
        mvhelper.close();
    }

    public long register(String user, String pasw)
    {
        ContentValues initialValues=new ContentValues();
        initialValues.put(DatabaseHelper.KEY_USERNAME, user);
        initialValues.put(DatabaseHelper.KEY_PASSWORD, pasw);

        return db.insertOrThrow(DatabaseHelper.DATABASE_TABLE, null, initialValues);

    }

    public boolean login(String username,String passw)
    {
        Cursor mcursor=db.rawQuery("SELECT * FROM " + DatabaseHelper.DATABASE_TABLE + " WHERE username=? AND password=?", new String[]{username,passw});
        if (mcursor!=null)
        {
            if (mcursor.getCount() > 0)
            {
                return true;
            }
        }
    return false;
    }

    public long mon(String fmon)
    {
        ContentValues initVal=new ContentValues();
        initVal.put(MyValues.KEY_FMON, fmon);
        return db.insertOrThrow(MyValues.DATABASE_NAME2, null, initVal);
    }

    public Cursor returnMon()
    {
        return db.query(MyValues.DATABASE_NAME2,new String[]{MyValues.KEY_FMON},null,null,null,null,null);
    }   
}

1 个答案:

答案 0 :(得分:0)

您正在为两个助手使用相同的数据库名称:

public MyValues(Context context)
    {super(context,DATABASE_NAME,null,DATABASE_VERSION);
根据您的代码,

应为DATABASE_NAME2

数据库DATABASE_NAME已经存在且版本正确,导致onCreate()onUpgrade()无法运行,会发生什么情况。

但是,考虑将助手合并为一个,除非你真的想拥有两个独立的数据库。