2017-03-27 74 views
-1

在我的android程序中,我想创建sq-lite数据库,其中三列应该在那里,因此对于每个第一列,第三列中应该有最多四个条目,所以我应该如何创建它?并且我想再次使用插入,更新,全部取消,删除等方法,并且应该有一个可以将第一列作为参考并从第三列操作条目的方法。所以任何人都可以请建议我如何实现这一目标。下面如何在android编程中用三列创建sqlite数据库?

回答

0

代码创建一个包含有扩展 表。考虑一个数据库中的类内容提供商

static final String CREATE_DB_USER_TABLE = 
       " CREATE TABLE " + USER_TABLE_NAME + 
         " name TEXT NULL, " + 
         " lastname TEXT NULL),"; 

    private static class DatabaseHelper extends SQLiteOpenHelper { 
      DatabaseHelper(Context context){ 
       super(context, DATABASE_NAME, null, DATABASE_VERSION); 
      } 

      @Override 
      public void onCreate(SQLiteDatabase db) { 
       db.execSQL(CREATE_DB_USER_TABLE); 
      } 

      @Override 
      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

       db.execSQL("DROP TABLE IF EXISTS " + USER_TABLE_NAME); 

       onCreate(db); 
      } 
     } 


     @Override 
     public boolean onCreate() { 
      Context context = getContext(); 
      DatabaseHelper dbHelper = new DatabaseHelper(context); 
      db = dbHelper.getWritableDatabase(); 
      return (db == null)? false:true; 
     } 
1

要在Android中创建的SQLite数据库必须创建延伸SQLiteOpenHelper然后覆盖类

public class DBOpenHelper extends SQLiteOpenHelper { 
private SQLiteDatabase mWritableDB; 
private SQLiteDatabase mReadableDB; 


private static final String USER_TABLE_NAME = "user"; 
private static final String USER_COL_ID = "id"; 
private static final String USER_COL_NAME = "userName"; 
private static final String USER_COL_AGE = "age"; 

private static final String QUERY_USER_CREATE_TABLE = 
     "CREATE TABLE " + USER_TABLE_NAME + " (" + USER_COL_ID + " INTEGER PRIMARY KEY, " + 
       USER_COL_NAME + " TEXT, " + USER_COL_AGE + " INTEGER DEFAULT 0);"; 

public DBOpenHelper(Context context) { 
    super(context, DBName, null, DBVersion); 
    mReadableDB = getReadableDatabase(); 
    mWritableDB = getWritableDatabase(); 
} 

@Override 
public void onCreate(SQLiteDatabase sqLiteDatabase) { 
    Log.e("query", QUERY_USER_CREATE_TABLE); 
    sqLiteDatabase.execSQL(QUERY_USER_CREATE_TABLE); 

}

:在的onCreate您可以创建类似表的onCreate和onUpgrade方法

上的活动,数据库名,cursorfactory(空)的构造函数传递上下文,DBVersion并获得getReadable和可写的数据库实例,以便您可以使用这些实例像下面执行INSERT,UPDATE和搜索查询:

//to insert a user Value in localDB 
public long addUser(User user) { 
    long newId = 0; 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(USER_COL_ID, user.getId()); 
    contentValues.put(USER_COL_NAME, user.getUserName()); 
    contentValues.put(USER_COL_AGE, user.getAge()); 
    if (mWritableDB != null) { 
     try { 
      newId = mWritableDB.insert(USER_TABLE_NAME, null, contentValues); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 
    return newId; 
} 

货品搜寻查询像

// To search user in LocalDB 
public User serach(Integer id) { 
    User user = new User(); 
    Cursor cursor = null; 

    try { 
     if (mReadableDB == null) { 
      mReadableDB = getReadableDatabase(); 
     } 
     cursor = mReadableDB.rawQuery("SELECT * FROM " + USER_TABLE_NAME + " WHERE " + USER_COL_ID + "=" + id, null); 
     cursor.moveToFirst(); 
     user.setId(cursor.getInt(cursor.getColumnIndex(USER_COL_ID))); 
     user.setUserName(cursor.getString(cursor.getColumnIndex(USER_COL_NAME))); 
     int table_age = cursor.getColumnIndex(USER_COL_AGE); 
     if (table_age == -1) { 
      user.setAge(-99); 
     } else { 
      user.setAge(cursor.getInt(cursor.getColumnIndex(USER_COL_AGE))); 
     } 

    } catch (SQLException e) { 
     e.printStackTrace(); 
    } finally { 
     if (cursor != null) { 
      cursor.close(); 
     } 
     return user; 
    } 
} 
相关问题