资源描述
【实验目的】
1、本次实验的目的是让大家熟悉Android中对数据库进行操作的相关的接 口、类等。SQLiteDatabase这个是在android中数据库操作使用最频繁的一个类。 通过它可以实现数据库的创立或翻开、创立表、插入数据、删除数据、查询数据、 修改数据等操作。
2、实现添加用户名,爱好小例程。
【实验要求】
1、完成Android开发平台的搭建及相关配置
2、创立工程并熟悉文件目录结构
3、实现例程添加用户名,爱好实验步骤
【实验原理】
在手机这种特殊设备里,经常会存取一些数据。例如,音频文件、视频文 件、图片文件和通讯录等数据。Android作为一种手机操作系统,提供了如下几 种存取数据的方式:Preference(配置)、File(文件)、SQLite数据和网络,可以根据 程序的实际需要选择合适的存取方式。
Android中通过SQLite数据库引擎来实现结构化数据存储。SQLite是一个 嵌入式数据库引擎,针对内存等资源有限的设备(如手机、PDA, MP3)提供的一 种高效的数据库引擎。
SQLite数据库不像其他的数据库(如Oracle,它没有服务器进程。所有的内 容包含在同一个单文件中。该文件是跨平台的,可以自由复制。基于其自身的先 天优势,SQLite在嵌入式领域得到了广泛应用。Android也没有重复创造“轮子”, 而是直接使用了 SQLite数据库。
Android提供了创立和使用SQLite数据库的APIo SQLiteDatabase代表一个 数据库对象,提供了操作数据库的一些方法,另外还有一个SQLiteOpenHelper 工具类提供了更简洁的功能。下面我们来看看SQLiteDatabase的常用方法如表 7.1所示。
方法名称
方法描述
openOrCrcateDatabasc(String path, SQLiteDatabasc.CursorFactory factory)
翻开或者创立数据库
insert(String tabic. String nullColumnHack, Contentvalues values)
添加一条记录
delete(String table, String whereClause, String[] whcrcArgs)
删除一条记录
qucry(String table, String,columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
查询记录
表 7.1 SQLiteDatabase 常用方法
续表
方法名称
方法描述
update( String table, Content Values values, String whercClause, String!] whereArgs)
修改记录
execSQL(String sql)
执行一条SQL语句
closeO
关闭数据库
【实验步骤】下面是一个添加用户名,爱好小例程
1、创立工程
新建一个Android工程命名为Database2、布局文件
修改main.xml布局文件,添加display.xml文件,用来显示列表。main.xml 代码如下<?xml version=n1.0n encoding=Hutf-8H?>
<LinearLayout xmlns:android=nH android:layout_width=nfill_parentn android:layout_height=nfill_parentn android:orientation=nverticar, ><TextView
android:layout__width=nfill_parent" android:layout_height=nwrap_contentn android:text=n@string/hellon /><TextView
android:layout_width=nfill_parentn android:layout_height=nwrap_contentH android:id=H@+id/namelabn android:text= "用户名” /><EditText
android:layout_width=nfill_parentn android:layout_height=nwrap_contentn android:id=H @+id/nameH />
<TextView
android:layout_width=nfill_parentn android:layout_height="wrap_content" android:id=n@+id/textView2H android: tex t= " 爱好” /><EditText
android:layout_width=nfill_parentnandroid:layout_height=Hwrap_contentn android:id=n@+id/likeH />
<Buttonandroid:layout_width=nfill_parentn android:layout_height=Hwrap_contentn android:id=H@+id/addH android:text="添加" />
</LinearLayout>
display.xml代码如下<?xml version=H1.0n encoding=nutf-8n?>
<LinearLayout xmlns:android=nn android:layout_width=Hfill_parentH android: lay out_height=nfill_parentnandroid:orientation=Hhorizontar, >
<TextViewandroid:layout_width=Hfill_parentn android:layout_height=nwrap_contentn android:id=n@+id/idn
android:paddingRight=H 1 Opxn /><TextView
android:layout_width=Hfill_parentn android:layout_height=nwrap_contentn android:id=n @+id/namenandroid:paddingRight=H 1 Opxn />
<TextViewandroid:layout_width=nfill_parentn android:layout_height=nwrap_contentn android:id=n@+id/liken
android:paddingRight=n 10pxn/>
</LinearLayout>3、创立 Activity
修改 DatabaseActivity.java 文件,新建 DBHelper.java 文件和 displayAvtivity.java,代码如To
DBHelper.java操作数据库的工具类,该类继承SQLiteOpenHelper。
package android.Database;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper{〃数据库名,表名
private static final String DB_NAME=Hstu.dbn;private static final String TBL_NAME=nstuTb 1H;
//创立表的语句private static final String
CREATE_TBL = "CREATE TABLEH+nstuTbl(Jd INTEGER DEFAULT fr NOT NULL PRIMARY KEY AUTOINCREMENT,name TEXT,hobby TEXT)n;private SQLiteDatabase db;
public DBHelper(Context context) {
super(context,DB_NAME,null,2);
("创立数据库) ) public void onCreate(SQLiteDatabase db){ this.db=db;db.execSQL(CREATE_TBL);
System.out.printf(HaaaOH);)
public void insert(ContentValues values) {SQLiteDatabase db=getWritableDatabase();
db.insert(TBL_NAME, null,values);db.close();
System. out. printf(”数据库插入操作) }public Cursor query(){
("数据库查询操作)SQLiteDatabase db=getWritableDatabase();
Cursor c=db.query(TBL_NAME, null, null, null, null, null, null);return c;
public void del(int id){("数据库删除方法)
if(db==null) {SQLiteDatabase db=getWritableDatabase();
db.delete(TBL_NAME, n_id=?H, newString[]{ String.valueOf(id)});
})
public void close(){("关闭数据库)
if(db!=null){db.close();
))
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) (}
)Database Activity .java获取页面输入的值,添加到数据库
public class DatabaseActivity extends Activity {private EditText etl,et2;
private Button b;/** Called when the activity is first created. */
@Overridepublic void onCreate(Bundle savedlnstanceState) {
super.onCreate(savedlnstanceState);setContentView(R.layout.main);
etl =(EditText)findViewById(R.id.name);et2=(EditText)findViewById(R.id.like);
b=(Button)findViewById(R.id.add);b.setOnClickListener(new OnClickListener() {
public void onClick(View v){String name=etl.getText().toString();
String like=et2.getText().toString();ContentValues values=new ContentValues();
〃在VALUES中添力口内容 values.put(nnamen, name); values.put(nhobbyn, like);〃实例化数据库类
DBHelper helper=new DBHelper(getApplicationContext()); helper.insert(values);//实例化INTENT Intent intent=new
Intent(DatabaseActivity.this,display Activity.class);start Activity (intent);
) });)
)
displayAvtivity.java显示列表,删除数据
package android.Database;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.Dialoglnterface;
import android.content.Dialoglnterface.OnClickListener;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnltemClickListener;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class displayActivity extends ListActivity{public void onCreate(Bundle savedlnstanceState){ super.onCreate(savedlnstanceState);
〃实例化DBHelperfinal DBHelper helper=new DBHelper(this);
〃获得 CursorCursor c=helper.query();
//列表项数组String[] from={ "_id\"name","hobby"};
〃列表项idint[] to= {R.id.id,R.id.name,R.id.like};
SimpleCursorAdapter adapter=newSimpleCursorAdapter( this,R.layout.display,c,from,to);
ListView listView=getListView();list View, set Adapter(adapter);
〃对话框final AlertDialog.Builder builder=new AlertDialog.Builder(this);
listView.setOnItemClickListener(new OnItemClickListener(){
public void OnItemClick(AdapterView<?> argO,View argl,int arg2,long arg3){final long temp=arg3;
builder.setMessage("是否册U除t己录?"),setPositiveButton("是", new Dialoginterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stubhelper. del((int) temp);
Cursor c=helper, query。;String[] from={ "_id" Jname” Jhobby"};
int[] to={R.id.id,R.id.name,R.id.like};SimpleCursorAdapter adapter=new
SimpleCursorAdapter(getApplicationContext(),R.layout.display,c,from,to);ListView 1 i st Vi e w=getLi st Vi e w();
list View, set Adapter(adapter);}
}).setNegativeButton("否",new OnClickListenerQ{public void onClick(DialogInterface dialog, int which) {
)});
〃创立提示对话框AlertDialog ad=builder.create();
ad.show();)
public void onItemClick(AdapterView<?> argO, View argl, int arg2,long arg3) {
// TODO Auto-generated method stub});
helper.close();
【实验结果】
工程界面:输入用户名,爱好添加到数据库如图7.1所示,由数据库查询出 来显示插入的列表,如图7.2所示。当单击列表时会弹出Alert询问是否删除, 进行删除操作,如图7.3所示。
Hello World, DatabaseActlvity! 用户名.
图7.1添加用户信息页
训町国5:03amdd dd
1 tt ttddd Tt
2 dd dd图7.2显示用户信息页
是否删除记录?
图7.3删除用户信息页
展开阅读全文