一、SQLiteOpenHelper類:
這次我們通過sqlite來動態添加數據,接下來我們創建一個openHelper.java,在前面sqlite博客中我們已經詳細的講了SQLite的創建及使用等操作,我們將在onCreate 創建方法中創建一張表和插入相關的值,通過db.execSQL()完成Sqlite的運行。
①openHelper2.java文件:
public class openHelper2 extends SQLiteOpenHelper { private static final String DB_NAME = "mydata.db"; // 數據庫名稱 private static final int version = 1; // 數據庫版本 public openHelper2(Context context) { super(context, DB_NAME,null , version); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub Log.i("hi", "沒有數據庫,創建數據庫"); String sql_message = "create table messaget(id int primary key,userName varchar(50),lastMessage varchar(50),datetime varchar(50))"; db.execSQL(sql_message); Log.i("hi", "創建表"); String inse="insert into messaget values(1,'TT','一起去旅游','10月1號')"; String inse2="insert into messaget values(2,'TT','一起去旅游','10月1號')"; String inse3="insert into messaget values(3,'TT','一起去旅游','10月1號')"; db.execSQL(inse); db.execSQL(inse2); db.execSQL(inse3); Log.i("hi", "添加數據到表中"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } }
1、通過繼承SQLiteOpenHelper來實現對sqlite的操作。
2、靜態創建數據名和數據庫版本。
我們在MainActvity.java文件中要進行適當的修改。
②MainActvity.java文件:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.weichatlayout); //此3行代碼用於創建表結構,以及初始化數據 openHelper2 helper = new openHelper2(MainActivity.this); SQLiteDatabase db = helper.getWritableDatabase(); db.close(); lv = (ListView)findViewById(R.id.listView1); sa = new SimpleAdapter(this, messageList2,//data 不僅僅是數據,而是一個與界面耦合的數據混合體 R.layout.listviewitems, new String[] {"userName","lastMessage","datetime","tou"},//from 從來來 new int[] {R.id.tv_userName,R.id.tv_lastMessage,R.id.tv_datetime,R.id.img}//to 到那里去 ); lv.setAdapter(sa); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //Map<String,Object> item = messageList2.get(position); //item.put("tou", "0"); sa.notifyDataSetChanged(); } }); openHelper2 helpert = new openHelper2(MainActivity.this); SQLiteDatabase db =helpert.getReadableDatabase(); Cursor c = db.query("messaget",null,null,null,null,null,null); if(c != null){ while(c.moveToNext()){ Log.i("dd","賦值1"); messages m = new messages(); m.setIt(Integer.parseInt(c.getString(c.getColumnIndex("id")))); m.setDatetime(c.getString(c.getColumnIndex("datetime"))); m.setLastMessage(c.getString(c.getColumnIndex("lastMessage"))); m.setUserName(c.getString(c.getColumnIndex("userName"))); messageList3.add(m); } } db.close(); for(int j=1;j<messageList3.size();j++) { Log.i("dd","賦值2"); messages m=messageList3.get(j); Map<String,Object> item = new HashMap<String,Object>(); //一行記錄,包含多個控件 item.put("tou",""+j); item.put("userName", m.getUserName()+j); item.put("lastMessage", m.getLastMessage()); item.put("datetime",m.getDatetime()); // item.put("color", R.color.red); //item.put("bacgkunon", R.color.red); messageList2.add(item); } });
1、通過openHelper2 helper = new openHelper2(MainActivity.this); SQLiteDatabase db = helper.getWritableDatabase();在創建時就調用openHelper2 創建表並且初始化數據。
2、通過cuosor游標判斷messaget表是否有值,如果不為null的話就通過c.getColumnIndex()方法進行取表中字段相關的值。
3、然后將值添加到結合中。
4、通過set(),get()方法對進行集合進行賦值和取值。