如何在sqlite中创建两个表?

时间:2014-05-22 11:10:36

标签: android sqlite

我想在android中有两个表,但我看到一个错误,就像找不到第二个表。我怎么修好? 有关数据库版本或onCreate方法的问题,我猜?

public class dbHelper extends SQLiteOpenHelper{
  private static final String DATABASE_NAME   = "DBO_Finish";
  private static final String TABLE_USERS = "users";
  private static final String TABLE_OLCUM = "olcum";
  private static final String TABLE_BILGI="asd";

  public dbHelper(Context context,Activity act) {
        super(context, DATABASE_NAME, null, 1);
  }

  @Override
  public void onCreate(SQLiteDatabase db) {
      String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_USERS + 
            "(id INTEGER PRIMARY KEY,user_name TEXT,user_password TEXT,olcum_id INTEGER" + ")";
      db.execSQL(sql);

      String sql2 = "CREATE TABLE IF NOT EXISTS " + TABLE_BILGI + 
            "(id INTEGER PRIMARY KEY,shortName TEXT,longName TEXT" + ")";
      db.execSQL(sql2);
  }

  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_USERS);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_BILGI);

        onCreate(db);
  }
}

2 个答案:

答案 0 :(得分:0)

我使用下面的方法来创建我的表。如果你想像添加字段一样修改表结构,那么首先更改你的类,然后将DatabaseHelper中的dbVersion数增加一。 并将创建新表。

每个具有指定类的表如下:

Tbltest的TblTest.java类:

公共类TblTest {

    public static final String TABLE = "Test";
    public static final String COLUMN_ID = "id";


    public int id;

    public static final String CREATE_TABLE = "create table "
              + TABLE + "("
              + COLUMN_ID + " integer primary key"
              + ");";
    }

和" DatabaseHelper.java"数据库助手的类(创建表):

public class DatabaseHelper extends SQLiteOpenHelper{

    private static final String DBNAME = "mytestdb";
    public SQLiteDatabase db; 
    private final static int dbVersion = 1;

    public DatabaseHelper() {
        super(AppContext.getAppContext(), DBNAME, null, dbVersion);
        open();
      }

      @Override
      public void onCreate(SQLiteDatabase db) {
          try {
              db.execSQL(TblTest.CREATE_TABLE);
        } catch (SQLException e) {
            e.printStackTrace();
        }
      }

      @Override
      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
          Log.w(DatabaseHelper.class.getName(),
                    "Upgrading database from version " + oldVersion + " to "
                        + newVersion + ", which will destroy all old data");
          db.execSQL("DROP TABLE IF EXISTS " + TblTest.TABLE);
          onCreate(db);
      }

      public void open() throws SQLException {

         db = getWritableDatabase();

      }

      public void close() {
          db.close();
      }


}

答案 1 :(得分:0)

构造函数的第三个参数是一个数字,表示您在哪个版本的数据库中。基本上每次使用该编号调用构造函数时,Android操作系统都会检查是否已存在具有该版本的数据库,如果是这种情况则不会发生任何其他情况,但如果数据库不存在或版本注册到它的位置较低,然后将调用onUpgrade方法。

因此,如果您想添加新表格,只需在这种情况下将该数字更改为' 2' ,并在每次要创建新表格时将其递增。

希望有所帮助,问候!