android中SQLite数据库操作例程
来源:互联网 发布:神之浩劫等待游戏数据 编辑:程序博客网 时间:2024/05/29 17:38
android中SQLite数据库操作例程
1、环境:
Windows7,eclipse4.41+adt
2、主要文件:
androidManifest.xml文件:工程说明文件
activity_main.xml文件:activity布局文件
listvie.xml文件:activity中ListView的布局文件
dbHelper.java文件:SQLiteOpenHelper的子类
MainActivity.java文件:Activity的子类
3、运行结果:
4、核心代码:
(1)androidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mydbdemo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.mydbdemo.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
(2)activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:addStatesFromChildren="true"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="name" android:textColor="?android:attr/textColorSecondary"/> <EditText android:id="@+id/et_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:singleLine="true"/> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:addStatesFromChildren="true"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="age " android:textColor="?android:attr/textColorSecondary"/> <EditText android:id="@+id/et_age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.5" android:singleLine="true" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:addStatesFromChildren="true" android:gravity="center"> <Button android:id="@+id/bt_add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="add"/> <Button android:id="@+id/bt_modify" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="modify"/> <Button android:id="@+id/bt_delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="delete"/> <Button android:id="@+id/bt_select" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="select"/> </LinearLayout> <ListView android:id="@+id/listView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="20dip"> </ListView> </LinearLayout></RelativeLayout>
(3)listvie.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/tvID" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.4"/> <TextView android:id="@+id/tvName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.3"/> <TextView android:id="@+id/tvAge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.3"/></LinearLayout>
(4)dbHelper.java
package com.example.mydbdemo;import android.content.Context;import android.database.sqlite.*;import android.database.sqlite.SQLiteDatabase.CursorFactory;/** * 本类主要实现数据库和表的创建,以及数据更新。 * @author 秦子文 * 20140304 */public class dbHelper extends SQLiteOpenHelper{public static final String TB_NAME="friends";public dbHelper(Context context, //上下文环境String name, //数据库名称CursorFactory factory, //索引工厂函数int version) { //版本号super(context, name, factory, version);// TODO Auto-generated constructor stub }//创建表,数据库第一次生成是会自动调用这个方法,一般在此方法中生成数据库的表。@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stub//注意TB_NAME前后要加空格 sql语句大小写不敏感db.execSQL("create table if not exists "+TB_NAME+" (_id integer primary key autoincrement,name varchar,age integer)");}//数据库更新时,系统主动调用这个方法@Overridepublic void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {// TODO Auto-generated method stubdb.execSQL("DROP TABLE IF EXISTS"+TB_NAME);onCreate(db);}}
(5)MainActivity.java
package com.example.mydbdemo;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import android.os.Bundle;import android.app.Activity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;import android.widget.SimpleAdapter;/** * 本类是Activity的子类主要用于与用户的交互 * add按钮可以将EditText框中的文字添加到数据库 * modify按钮可以将ListView中选中的条目修改 * delete按钮可以将ListView中选中的条目删除 * 默认选中select按钮 * @author 秦子文 * 20150304 */public class MainActivity extends Activity {private static String DB_NAME="mydb";private EditText et_name;private EditText et_age;private ArrayList<Map<String,Object>> data;private dbHelper dbHelper;private SQLiteDatabase db;private Cursor cursor;private SimpleAdapter listAdapter;private View view;private ListView listview;private Button selBtn,addBtn,updBtn,delBtn;private Map<String,Object> item;private String selId;private ContentValues selCV;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取各个控件的引用et_name = (EditText)findViewById(R.id.et_name);et_age = (EditText)findViewById(R.id.et_age);listview = (ListView)findViewById(R.id.listView);selBtn = (Button)findViewById(R.id.bt_select);addBtn = (Button)findViewById(R.id.bt_add);updBtn = (Button)findViewById(R.id.bt_modify);delBtn = (Button)findViewById(R.id.bt_delete);//为Button设置监听器,监听器接口均由对应的内部类实现selBtn.setOnClickListener(new selbutton());addBtn.setOnClickListener(new addbutton());updBtn.setOnClickListener(new modifybutton());delBtn.setOnClickListener(new delbutton());//创建数据库dbHelper = new dbHelper(this,DB_NAME,null,1);//得到数据库引用。也可调用dbHelper.getReadableDatabase()方法,视情况而定db = dbHelper.getWritableDatabase();//创建ArrayList<Map<String,Object>>data = new ArrayList<Map<String,Object>>();dbFindAll(); //检索数据库中的所有数据并显示//为ListView添加监听器listview.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> parent, View v, int position,long id) {// TODO Auto-generated method stub//将手指点击位置条目的所有数据保存到Map中Map<String,Object> listItem = (Map<String,Object>)listview.getItemAtPosition(position);//将对应数据显示到EditText控件中et_name.setText((String)listItem.get("name"));et_age.setText((String)listItem.get("age"));//保存选中idselId = (String)listItem.get("_id");}});}//Button监听接口实现类public class addbutton implements OnClickListener{@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubdbAdd(); //添加数据dbFindAll();}}public class delbutton implements OnClickListener{@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubdbDel(); //删除数据dbFindAll();}}public class modifybutton implements OnClickListener{@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubdbUpdate(); //修改数据dbFindAll();}}public class selbutton implements OnClickListener{@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubdbFindAll();}}protected void dbFindAll(){data.clear();cursor = db.query(dbHelper.TB_NAME, //表名null, //columnsnull, //selectionnull, //selectionArgsnull, //groupBynull, //having"_id ASC"); //orderBycursor.moveToFirst();while(!cursor.isAfterLast()){String id = cursor.getString(0);String name = cursor.getString(1);String age = cursor.getString(2);item = new HashMap<String,Object>();item.put("_id", id);item.put("name", name);item.put("age", age);data.add(item);cursor.moveToNext();}showList();}protected void dbAdd(){ContentValues values = new ContentValues(); //键值对类似于mapvalues.put("name", et_name.getText().toString().trim()); //得到EditText中的数据并整形,存入对应键下values.put("age", et_age.getText().toString().trim());long rowid = db.insert(dbHelper.TB_NAME, //表名null, //空列的默认值values); //列名和对应的列值if(-1 == rowid){Log.i("myDBDemo","数据插入失败!");}else{Log.i("myDBDemo","数据插入成功!");}}protected void dbUpdate(){ContentValues values = new ContentValues();values.put("name", et_name.getText().toString().trim());values.put("age", et_age.getText().toString().trim());String where = "_id="+selId;int i = db.update(dbHelper.TB_NAME, //表名 values, //更新的列和对应数据 where, //更新条件 null); //更新条件数据if(i>0){Log.i("mydbDemo","数据更新成功!");}else{Log.i("mydbDemo","数据更新失败!");}}protected void dbDel(){String where = "_id="+selId;int i = db.delete(dbHelper.TB_NAME, //表名where, //删除条件null); //删除条件数组if(i>0){Log.i("myDbDemo","数据删除成功!");}else{Log.i("myDbDemo","数据删除失败!");}}//ListView显示数据private void showList(){listAdapter = new SimpleAdapter(this, //山下文环境data, //要显示的数据,类型为ArrayList<Map<String,Object>>R.layout.listview, //listView引用的布局文件,即res/layout/listview.xmlnew String[]{"_id","name","age"}, //data中的键名数组new int[]{R.id.tvID,R.id.tvName,R.id.tvAge}); //要显示上面键名的控件数组,该id来自于res/layout/listview.xmllistview.setAdapter(listAdapter); //将此适配器设置为res/layout/activity_main.xml中ListView的适配器}@Overridepublic 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;}}
5、工程完整代码:
http://download.csdn.net/detail/a_cainiao_a/8473383
6、恳请批评指正。
0 0
- android中SQLite数据库操作例程
- android中sqlite数据库操作
- android中SQLite数据库操作
- Android中操作Sqlite数据库:例图
- android中SQLite数据库的操作
- android中SQLite数据库的操作
- Android中操作SQLite数据库再学习
- Android开发中SQLite数据库操作(一)
- Android开发中SQLite数据库操作(二)
- android sqlite数据库操作
- Android数据库操作--------SQLite
- android数据库SQLite操作
- android 数据库 sqlite 操作
- android SQLite数据库操作
- Android SQLite数据库操作
- Android SQLite数据库操作
- Android sqlite 数据库操作
- Android操作Sqlite数据库
- 使用oracle和sqlserver的几点区别
- jQuery移动优先的炫酷环形菜单插件
- robotium—只有apk文件的测试
- 在VMware里克隆出来的CentOS,没有eth0的解决办法
- 使用SOS.dll调查内存泄露
- android中SQLite数据库操作例程
- android开发框架AndroidAnnotations介绍
- LeetCode:Partition List
- 微软ERP家具行业解决方案
- POJ 3104 - Drying(二分搜索)
- C++中 explicit的用法
- 二分图判断 (图的搜索)
- android root权限破解分析
- BZOJ 2803 Poi2012 Prefixuffix Hash