Android數據庫存儲與訪問

學了SQLite之後,還是有點暈暈乎乎的,靠個例子練練手可能就會明白了,當然了分享出來,還有更新的新手呢!!
先上圖:MainActivity
ShowActivity
UpdateActivity
長按彈出對話框
插入數據
上代碼:

public class InsertActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_insert);
        Button commit=(Button) findViewById(R.id.insert_commit);
        commit.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                EditText et1=(EditText)findViewById(R.id.insert_name);
                EditText et2=(EditText)findViewById(R.id.insert_age);

                try{
                    Person person=new Person(et1.getText().toString(),
                                Integer.parseInt(et2.getText().toString()));
                insert(person);
                }catch(Exception e){
                    Toast.makeText(getApplicationContext(), "姓名或年齡不能爲空!", 1).show();
                }
                setResult(RESULT_OK, null);     
                finish();  //不能少                
            }
        });
        Button cancle=(Button) findViewById(R.id.insert_cancle);
        cancle.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                finish();           
            }
        });
    }
    public void insert(Person person){
        DBOpenHelper helper = new DBOpenHelper(getApplicationContext(), "test.db", null,1);  
        SQLiteDatabase db=helper.getWritableDatabase();
        db.execSQL("INSERT INTO person VALUES (NULL, ?, ?)", 
                                                new Object[ ] { person.name, person.age } ); 
        db.close();    
        Toast.makeText(getApplicationContext(), "記錄添加成功", Toast.LENGTH_SHORT).show();
        }   
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.insert, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
public class MainActivity extends Activity implements OnClickListener{
    private static int DB_VERSION=1;
    private Button button1=null,button2=null;//,button3=null,button4=null,button5=null,button6=null;
    private TextView textview=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findview();
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
    }
    public void findview(){
        button1=(Button) findViewById(R.id.button1);
        button2=(Button) findViewById(R.id.button2);
        textview=(TextView) findViewById(R.id.textView1);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button1:
             //創建輔助類對象
             DBOpenHelper helper = new DBOpenHelper(getApplicationContext(), "test.db", null,1);
           //調用getWritableDatabase()或getReadableDatabase()纔會真正創建或打開 
           SQLiteDatabase db=helper.getWritableDatabase();  
           db.close(); //操作完成後關閉數據庫連接
            break;
        case R.id.button2:
            Intent intent1=new Intent(MainActivity.this,ShowActivity.class);
            startActivity(intent1);
            break;
        default:
            break;
        }       
    }
}
public class ShowActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show);

        DBOpenHelper helper = new DBOpenHelper(getApplicationContext(), "test.db", null,1);  
        SQLiteDatabase db=helper.getWritableDatabase();
        Cursor cursor = db.rawQuery( "SELECT id as _id, name,age FROM person",null);  
        String[] from = { "_id", "name", "age" };
        int[] to = { R.id.txtID, R.id.txtName, R.id.txtAge };
        SimpleCursorAdapter adapter = new SimpleCursorAdapter( this, R.layout.listview, cursor, from, to);
        //cursor.close();不能使用cursor.close(),否則SimpleCursorAdapter將不能從中讀取數據顯         
        TextView tv=(TextView)findViewById(R.id.show_tv);   //簡單用TextView顯示數據
        tv.setText("查詢到"+cursor.getCount()+"條記錄");
        ListView li=(ListView)findViewById(R.id.listView1);
        li.setAdapter(adapter); 
        Button button=(Button) findViewById(R.id.add);
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(ShowActivity.this,InsertActivity.class);
                startActivityForResult(intent, 100);
            }
        });
        registerForContextMenu(li); 
        }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==100){
            if(resultCode==RESULT_OK){
                onCreate(null);
            }
        }
        if(requestCode==200)
            if(resultCode==RESULT_OK){
                onCreate(null);
            }
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.show, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
        menu.setHeaderTitle("操作");
        getMenuInflater().inflate(R.menu.show, menu);
    }
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        switch ( item.getItemId() ) {
        case R.id.item1:
        del(item);
        return true;
        case R.id.item2:
            change(item);
        return true;
        default:  
        return false;
    }
    }
    private void change(MenuItem item) {
            final AdapterView.AdapterContextMenuInfo info2= (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
        Intent intent =new Intent(ShowActivity.this, UpdateActivity.class);
        Bundle bundle=new Bundle();
        bundle.putString("id", String.valueOf(info2.id));
        bundle.putString("username",((TextView)info2.targetView.findViewById(R.id.txtName)).getText().toString());
        bundle.putString("age",((TextView)info2.targetView.findViewById(R.id.txtAge)).getText().toString());
        intent.putExtras(bundle);
        startActivityForResult(intent, 200);
    }
    private void del(MenuItem item) {
        final AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
        if(info.id>0){
            new AlertDialog.Builder(this).setTitle("刪除" + info.id)
                         .setPositiveButton("確定", new DialogInterface.OnClickListener() {
                         public void onClick(DialogInterface dialog, int which) {
                         DBOpenHelper helper = new DBOpenHelper(getApplicationContext(), "test.db", null,1);  
                         SQLiteDatabase db=helper.getWritableDatabase();
                         db.execSQL( "Delete from person where id=?", new Object[ ]{ info.id } );
                         db.close();    
                         Toast.makeText(getApplicationContext(), "記錄刪除成功", Toast.LENGTH_SHORT).show();
                         onCreate(null);     //重新加載一次Activity,刷新
                 }
                         })
                         .setNegativeButton("取消", null)
                         .show();
        }

    }
}
發佈了30 篇原創文章 · 獲贊 19 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章