分别使用sqlite3工具和Android代码的方式建立SQLite数据库。在数据库建立完成后,编程实现基本的数据库添加和删除功能。创建一个学生管理的APP,基本信息包含学生姓名,班级,学号。采用数据库存储这些信息。应用应该至少包含信息录入和删除功能。数据显示考虑采用ListView。
MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.PopupMenu;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity {
private DBAdapter dbAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button btnAdd = (Button) findViewById(R.id.btnAdd);
final ListView lv1 = (ListView) findViewById(R.id.lv1);
final EditText addClassEditText = (EditText) findViewById(R.id.addClass);
final EditText addSnoEditText = (EditText) findViewById(R.id.addSno);
final EditText addSnameEditText = (EditText) findViewById(R.id.addSname);
dbAdapter = new DBAdapter(this);
dbAdapter.open();
List<String> list = new ArrayList<String>();
list.add("ID" + " " + "班级" + " " + "学号" + " " + "姓名");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
lv1.setAdapter(adapter);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Student ss = new Student();
String sno = addSnoEditText.getText().toString();
String sname = addSnameEditText.getText().toString();
String classes = addClassEditText.getText().toString();
ArrayAdapter temp_adp = (ArrayAdapter) lv1.getAdapter();
temp_adp.add(dbAdapter.insert(ss) + " " + classes + " " + sno + " " + sname);
}
});
lv1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
if (id > 0) {
PopupMenu popup = new PopupMenu(MainActivity.this, view);
popup.getMenuInflater().inflate(R.menu.main, popup.getMenu());
popup.show();
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu1:
ArrayAdapter temp_adp = (ArrayAdapter) lv1.getAdapter();
temp_adp.remove(temp_adp.getItem(position));
return true;
default:
return false;
}
}
});
}
return true;
}
});
}
}
DBAdapter.java
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DBAdapter {
private final Context context;
private SQLiteDatabase db;
private DBHelper dbHelper;
private final static String DB_TABLE="studentinfo";
private final static String DB_NAME="student.db";
private final static int DB_VERSION=1;
private final static String KEY_ID="id";
private final static String KEY_SNO="sno";
private final static String KEY_SNAME="sname";
private final static String KEY_CLASSES="classes";
public DBAdapter(Context _cContext) {
context = _cContext;
}
public void close()
{
if(db!=null)
{
db.close();
db=null;
}
}
public void open() throws SQLiteException
{
dbHelper = new DBHelper(context, DB_NAME, null, DB_VERSION);
try
{
db = dbHelper.getWritableDatabase();
}
catch(Exception e)
{
db = dbHelper.getReadableDatabase();
}
}
public long insert(Student s)
{
ContentValues cv = new ContentValues();
cv.put(KEY_SNO,s.getSno() );
cv.put(KEY_SNAME, s.getSname());
cv.put(KEY_CLASSES, s.getClasses());
return db.insert(DB_TABLE, null, cv);
}
public Student[] convertToStudent(Cursor c)
{
int resultsCount = c.getCount();
if(resultsCount==0||!c.moveToFirst())
{
return null;
}
Student []stu = new Student[resultsCount];
for (int i = 0; i < stu.length; i++) {
stu[i] = new Student();
String sno = c.getString(c.getColumnIndex("sno"));
String sname = c.getString(c.getColumnIndex("sname"));
String classes = c.getString(c.getColumnIndex("classes"));
stu[i].id=c.getInt(0);
stu[i].setSno(sno);
stu[i].setSname(sname);
stu[i].setClasses(classes);
c.moveToNext();
}
return stu;
}
private static class DBHelper extends SQLiteOpenHelper{
public DBHelper(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
private static final String SQL="CREATE TABLE studentinfo ("
+ "id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "sno TEXT DEFAULT NONE,"
+ "sname TEXT DEFAULT NONE,"
+ "classes TEXT DEFAULT NONE"
+ ")";
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS"+DB_TABLE);
onCreate(db);
}
}
}
Student.java
import java.io.Serializable;
public class Student implements Serializable{
public int id=-1;
public String sno;
public String sname;
public String classes;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getClasses() {
return classes;
}
public void setClasses(String classes) {
this.classes = classes;
}
@Override
public String toString() {
return "id:" + id +" " + "学号:" + sno +" "+ "姓名:" + sname +" "+ "班级:" + classes ;
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
tools:context="com.example.administrator.exp6.MainActivity"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/viewSno"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="学号:"
android:textSize="20dp"/>
<EditText
android:id="@+id/addSno"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10" >
<requestFocus />
</EditText>
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/viewSname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名:"
android:textSize="20dp"/>
<EditText
android:id="@+id/addSname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10" />
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/viewClass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="班级:"
android:textSize="20dp"/>
<EditText
android:id="@+id/addClass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10" />
</TableRow>
<LinearLayout
android:layout_height="wrap_content"
android:gravity="center">
<Button
android:id="@+id/btnAdd"
android:layout_width="150px"
android:layout_height="wrap_content"
android:textSize="35px"
android:text="添加" />
</LinearLayout>
</TableLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ListView
android:id="@+id/lv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
</LinearLayout>
</LinearLayout>