標籤:
直接上代碼
MainActiviy.java
package com.example.sqllitcache;import android.app.Activity;import android.app.AlertDialog;import android.content.ContentValues;import android.content.DialogInterface;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView.OnItemLongClickListener;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;import android.widget.Toast;public class MainActivity extends Activity {ListView lv;Button submit;EditText et;SQLiteDatabase dbwrite ;Dbhelper dbhelper;ArrayAdapter <String> adapter; Cursor c; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv=(ListView) findViewById(R.id.listView1); submit=(Button) findViewById(R.id.button1); et=(EditText) findViewById(R.id.autoCompleteTextView1); adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); lv.setAdapter(adapter); dbhelper=new Dbhelper(this); dbwrite=dbhelper.getWritableDatabase(); getData(); //點擊提交 submit.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString newData=et.getText().toString();addData(newData);}}); //長按清單項目,修改資料 lv.setOnItemLongClickListener(new OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> arg0, View arg1,final int position, long arg3) {// TODO Auto-generated method stubnew AlertDialog.Builder(MainActivity.this).setPositiveButton("我確定修改",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubupdateData(position);}}).show();return false;}}); //短按清單項目刪除資料 lv.setOnItemClickListener(new OnItemClickListener() {public void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) {// TODO Auto-generated method stubToast.makeText(MainActivity.this, position+"", 0).show();deleteData(position);}}); } //添加資料的執行函數,添加到本機資料庫,並提示更新listtview void addData(String newData) { //添加到本機資料庫 ContentValues content=new ContentValues(); String putdata=et.getText().toString(); content.put("data", putdata); dbwrite.insert("datatable",null, content); getData(); } //刪除一條資料 void deleteData(int position) { c.moveToPosition(position);int id=c.getInt(c.getColumnIndex("_id"));dbwrite.delete("datatable", "_id=?", new String[]{id+""} );getData(); } //修改一條資料 void updateData(int position) { c.moveToPosition(position);ContentValues cv=new ContentValues();cv.put("data", "changed");int id=c.getInt(c.getColumnIndex("_id"));dbwrite.update("datatable", cv, "_id=?", new String [] {id+""}); getData(); } //擷取資料 void getData() { c= dbwrite.query("datatable", null, null, null, null, null, null); adapter.clear(); //讀取本機資料庫 while(c.moveToNext()) { String data=c.getString(c.getColumnIndex("data")); int id=c.getInt(c.getColumnIndex("_id")); adapter.add(data+":"+id); System.out.println(data+": "+id); } adapter.notifyDataSetChanged(); }}
Dbhelper.java
package com.example.sqllitcache;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class Dbhelper extends SQLiteOpenHelper {public Dbhelper(Context context ) {super(context, "mydb",null, 1);// TODO Auto-generated constructor stub}@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stubdb.execSQL("CREATE TABLE datatable ("+ "_id INTEGER PRIMARY KEY AUTOINCREMENT,"+ "data String DEFAULT \"\")" );}@Overridepublic void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {// TODO Auto-generated method stub}}
安卓中實現對SQLITE資料表的增刪改查