如何在一个数据库中创建两个表

时间:2010-12-18 13:08:40

标签: android sqlite

我试图在sqlite中的一个数据库中创建两个表,但只有第一个表(sharelist)正在创建而第二个表(usedlist)没有创建。

请帮帮我......

public class createSqliteHelper扩展了SQLiteOpenHelper {

 private DatabaseHelper DBHelper;
public static final String KEY_ROWID = "sy_id";

    public static final String KEY_TITLE = "symbol";
    public static final String KEY_POSITION = "position";    
    private static final String TAG = "createSqliteHelper";


private static final String DATABASE_NAME="tradely.db";
 private static final String DATABASE_TABLE = "sharelist";


   private static final String DATABASE_TABLE1 = "usedlist";

private static final int SCHEMA_VERSION=1;

 private DatabaseHelper DBHelper;
    private SQLiteDatabase db;



    private static final String DATABASE_CREATE=("CREATE TABLE IF NOT EXISTS sharelist (_id INTEGER PRIMARY KEY AUTOINCREMENT, category TEXT);");
    private static final String DATABASE_CREATE1=("CREATE TABLE IF NOT EXISTS usedlist( sy_id INTEGER PRIMARY KEY AUTOINCREMENT, symbol TEXT, position INTEGER, FOREIGN KEY (symbol) REFERENCES sharelist(_id);");






    public createSqliteHelper(Context context) {

    super(context, DATABASE_NAME, null, SCHEMA_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {


    try {


        db.execSQL(DATABASE_CREATE);
        db.execSQL(DATABASE_CREATE1);

    }
    catch(SQLiteException e) {
        Log.e("createerr",e.toString());
    }

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    android.util.Log.w("LunchList", "Upgrading database, which will destroy all old data");
    db.execSQL("DROP TABLE IF EXISTS sharelist");
    db.execSQL("DROP TABLE IF EXISTS usedlist");
    onCreate(db);
}

2 个答案:

答案 0 :(得分:7)

您缺少)来关闭第二个CREATE TABLE声明;因此,表格没有被创建,你得到了这个错误。

你有:

sharelist(_id);

一定是:

sharelist(_id) );

答案 1 :(得分:0)

这不是您的直接问题,但您可能需要尽快解决此问题:您正在symbol表中创建名为usedlist的TEXT列。我猜测,从列名称,您打算将股票代码存储在该列中。但symbol被声明为FOREIGN KEY,它引用_id表中名为sharelist的列,它是一个INTEGER。

最好将symbol移到sharelist表格中,然后在usedlist(例如share_id)中创建一个新列,以引用sharelist }。