android下数据库操作
在Android中,Google提供了封装类,即SQLiteOpenHelper,通过继承SQLiteOpenHelper,我们可以很容易的设计和操作数据库。
在继承SQLiteOpenHelper的时候实现OnCreate()和OnUpgrade()方法。
下面是Android封装接口设计数据库的一般步骤:
1. 定义数据库名、数据库版本号、数据表名*
2. 实现OnCreate()和OnUpgrade()方法*
3.实现插入、更新、删除和查询方法
这是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"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="vertical"
>
<EditText
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="60dip"
android:inputType="text"
android:text="name"
/>
<EditText
android:id="@+id/number"
android:layout_width="fill_parent"
android:layout_height="60dip"
android:inputType="text"
android:text="number"
/>
<EditText
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="60dip"
android:inputType="text"
android:text="content"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dip"
android:orientation="horizontal"
>
<Button
android:id="@+id/add"
android:layout_width="80dip"
android:layout_height="50dip"
android:text="add"
/>
<Button
android:id="@+id/delete"
android:layout_width="80dip"
android:layout_height="50dip"
android:text="del"
/>
<Button
android:id="@+id/query"
android:layout_width="80dip"
android:layout_height="50dip"
android:text="query"
/>
<Button
android:id="@+id/deltb"
android:layout_width="80dip"
android:layout_height="50dip"
android:text="deltb"
/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
>
<TextView
android:id="@+id/allData"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
</LinearLayout>
主要MainActivity:
package com.example.db;
import java.util.ArrayList;
import java.util.HashMap;
import com.example.dbtestdemo.R;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
@SuppressLint("ShowToast")
public class MainActivity extends Activity implements OnClickListener{
public TextView allData;
public EditText name,number,content;
public Button add,delete,query,deltb;
public ArrayList<HashMap<String, Object>> DB_Data = new ArrayList<HashMap<String, Object>>();
public MySqlHelper mySQL;
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE); // 无标
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
InitUnit();
mySQL=new MySqlHelper(getApplicationContext());
}
private void InitUnit() {
// TODO Auto-generated method stub
allData=(TextView)this.findViewById(R.id.allData);
name=(EditText)this.findViewById(R.id.name);
number=(EditText)this.findViewById(R.id.number);
content=(EditText)this.findViewById(R.id.content);
add=(Button)this.findViewById(R.id.add);
delete=(Button)this.findViewById(R.id.delete);
query=(Button)this.findViewById(R.id.query);
deltb=(Button)this.findViewById(R.id.deltb);
add.setOnClickListener(this);
delete.setOnClickListener(this);
query.setOnClickListener(this);
deltb.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId())
{
case R.id.add:
mySQL.InsertData(name.getText().toString(),
number.getText().toString(), content.getText().toString());
Toast.makeText(MainActivity.this, "Add success!", Toast.LENGTH_SHORT).show();
break;
case R.id.delete:
mySQL.DeleteData(name.getText().toString());
Toast.makeText(MainActivity.this, "Delete success!", Toast.LENGTH_SHORT).show();
break;
case R.id.query:
if(DB_Data!=null)
DB_Data.clear();
DB_Data=mySQL.ShowData();
if(DB_Data!=null)
{
int row=DB_Data.size();
String AllData="",data;
for(int i=0;i<row;i++){
data=DB_Data.get(i).toString();
AllData=AllData+data;
}
allData.setText(AllData);
}
else
allData.setText("没有数据....");
break;
case R.id.deltb:
mySQL.deleteDatabase(getApplicationContext());
Toast.makeText(getApplicationContext(), "Database is delete!", Toast.LENGTH_SHORT).show();
break;
}
}
}
继承SQLiteOpenHelper类:
package com.example.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MyDatabaseHelper extends SQLiteOpenHelper{
private final static String DB_NAME="youth.db";
private final static int DB_VERISON=1;
private final static String TABLE_NAME="youthdata";
public MyDatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERISON);
// TODO Auto-generated constructor stub
}
public String getTableName(){
return TABLE_NAME;
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String sql="create table if not exists "+TABLE_NAME+
" (Name text,Number text,Content text);";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
数据库操作类:
package com.example.db;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.widget.Toast;
public class MySqlHelper {
public MyDatabaseHelper mOpenHelper ;
public SQLiteDatabase db;
private String TABLE_NAME;
public ArrayList<HashMap<String, Object>> DB_Data = new ArrayList<HashMap<String, Object>>();
public MySqlHelper(Context context){
mOpenHelper=new MyDatabaseHelper(context);
TABLE_NAME=mOpenHelper.getTableName();
}
public ArrayList<HashMap<String, Object>> ShowData(){
db=mOpenHelper.getReadableDatabase();
String Col[]={"Name","Number","Content"};
Cursor cursor=db.query(TABLE_NAME, Col, null, null, null, null,null);
int row=cursor.getCount();
if(cursor.getCount()!=0)
{
cursor.moveToFirst();
for(int i=0;i<row;i++)
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("Name", cursor.getString(0));
map.put("Number",cursor.getString(1));
map.put("Content", cursor.getString(2));
DB_Data.add(map);
cursor.moveToNext();
}
cursor.close();
db.close();
return DB_Data;
}
return null;
}
public void InsertData(String name,String number,String content){
db=mOpenHelper.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put("Name",name);
cv.put("Number",number);
cv.put("Content",content);
db.insert(TABLE_NAME, null, cv);
db.close();
}
public void DeleteData(String name){
db=mOpenHelper.getWritableDatabase();
db.delete(TABLE_NAME, "Name='"+name+"'", null);
db.close();
}
public boolean deleteDatabase(Context context) {
return context.deleteDatabase(TABLE_NAME);
}
}
程序截图: