android链接SQLite的作业

本文通过一个完整的Android应用示例,展示了如何使用SQLite进行基本的数据操作,包括创建数据库、增删查改等功能,并提供了详细的代码实现。

android链接SQLite的作业

先上图看看结果:
1127043-20170515132257744-1881714463.png
1127043-20170515132306807-982040315.png
1127043-20170515132318525-1490270333.png

分为5个java和2个xml

activity_main.xml

···java

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/add"
        android:text="增加一条纪录"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/del"
        android:text="删除第一条记录"/>
</LinearLayout>
<ListView
    android:id="@+id/list_item"
    android:layout_width="wrap_content"
android:layout_height="wrap_content"></ListView>

item.xml

···java

就只放一个TextView
然后是5个java的部分了,分别用于
1.创建数据库
2.创建适配器
3.创建一个person的信息封装
4.一个查询删除插入的方法集
5.主程序运行

1.创建数据库

···java
public class MyDBHelper extends SQLiteOpenHelper {
public MyDBHelper(Context context) {
super(context,"mydb.db", null,1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String sql="create table person(id integer primary key autoincrement,name varchar(64))";
    db.execSQL(sql);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("droptableifexists mydb");
    onCreate(db);
}

}

2.创建适配器

```java
public class MyCursorAdapter extends CursorAdapter {
public MyCursorAdapter(Context context, Cursor cursor) {
super(context, cursor,0);
}

@Override
public View newView(Context context, Cursor cursor, ViewGroup viewGroup) {

    return LayoutInflater.from(context).inflate(R.layout.item_person, viewGroup, false);//
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
    TextView name = (TextView) view.findViewById(R.id.tv_name);
    name.setText(cursor.getString(cursor.getColumnIndex("name")));
}

}

3.创建一个person的信息封装

···java
public class Person implements Serializable {
private int id;
private String name;

public Person() {
}

public Person(String name) {
    this.name = name;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

}

4.一个查询删除插入的方法集

···java
ublic class PersonDAO {
private ListView lv;
private Context context; // Activity上下文
private MyDBHelper helper; //创建、升级、打开数据库
private SQLiteDatabase db;
private SimpleAdapter simpleAdapter;

public PersonDAO(Context context) {
    helper = new MyDBHelper(context);
}

public void insert(Person person) {
    db = helper.getWritableDatabase();
    String sql = "insert into person(name) values(?)";
    db.execSQL(sql, new Object[]{
            person.getName()});


}
public Cursor selectAll() {
    db =helper.getReadableDatabase();
    Cursor cursor= db.query("person",null,null,null,null,null,null);
    return cursor;
}
public List<Person> selectAllPersons() {
    db = helper.getReadableDatabase();

//
Cursor cursor = db.rawQuery("select * from person", null);
// 将所有的数据放入List集合
// 1. 创建一个List对象
List persons = new ArrayList<>();

    // 2. 循环cursor
    if(cursor.moveToFirst()) {
        do {
            Person person = new Person();
            person.setId(cursor.getInt(cursor.getColumnIndex("id")));
           person.setName(cursor.getString(cursor.getColumnIndex("name")));


           persons.add(person);
        }while(cursor.moveToNext());
    }
    return persons;


}
public void delete(int id) {
    db = helper.getWritableDatabase();
    db.delete("person", "id=?", new String[] {String.valueOf(id)});

    String sql = "delete from person where id=?";
    db.execSQL(sql, new Object[]{id});
}

}

5.主程序运行

···java
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
public Boolean flag;
private ListView lv;
private Person person;
private Cursor cursor;
private Button btn_add;
private Button btn_del;
private EditText edit;
private PersonDAO personDAO;
private MyCursorAdapter adapter;
private SimpleAdapter simpleAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lv = (ListView) findViewById(R.id.list_item);
    edit = (EditText) findViewById(R.id.edit);
    btn_add = (Button) findViewById(R.id.add);
    btn_del = (Button) findViewById(R.id.del);
    btn_add.setOnClickListener(this);
    btn_del.setOnClickListener(this);
     PersonDAO personDAO=new PersonDAO(this);
    cursor=personDAO.selectAll();

        adapter=new MyCursorAdapter(this,cursor);
        lv.setAdapter(adapter);


}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.add:

            String name = edit.getText().toString();
            PersonDAO personDAO = new PersonDAO(this);

            if (true) {

                Person person = new Person(name);
                personDAO.insert(person);
                cursor=personDAO.selectAll();
                adapter.changeCursor(cursor);//
            } else {

                if (person != null) {
                    person.setName(name);


                }
            }

            Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show();

        case R.id.del:

            String person2= edit.getText().toString();
            PersonDAO personDAO2 = new PersonDAO(this);
            if(person!=null){            //判断记录是否为空,如果是空的话会提示记录为空
                cursor.moveToFirst();//数据的第一行
                person=new Person();
                person.setId(cursor.getInt(cursor.getColumnIndex("_id")));
                personDAO2.delete(person.getId());//调用delete方法删除第一条记录
               personDAO = new PersonDAO(this);
                cursor = personDAO.selectAll();
                adapter = new MyCursorAdapter(this, cursor);
               lv.setAdapter(adapter);
                Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();
            }
            Toast.makeText(this,"记录为空",Toast.LENGTH_SHORT).show();

            break;

          }
}

}1127043-20170515132244275-523635844.png

转载于:https://www.cnblogs.com/wzx6627/p/6855969.html

一.创建一个DataBaseHelper DataBaseHelper是一个访问SQLite的助类,提供两个方面的功能 1.getReadableDatebase(),getWriteableDatabase()可以获取SQLiteDatabase对象,通过 2.提供了onCreate()和onUpdate()两个回调函数,允许我们常见和升级数据库是进行使用 A、 在SQLiteOpenHelper的子类当中,必须要有的构造函数 B、该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDataBase对象的时候onCreate 二、创建一个实体person类并且给字段和封装 三、创建一个业务类对SQL的CRUD操作 1.getWritableDatabase()和getReadableDatabase()的区别 ,两个方法都可以获取一个用于操作数据库SQLiteDatabase实例 2.execSQL(增,删,改都是这个方法)和close();android内部有缓存可关闭也不关闭也行,查询rawQuery是方法 3.在分页有到Cursor(游标)取游标下一个值cursor.moveToNext(),用游标对象接数据 "select * from person limit ?,?" person不能加上where 关键字 4.在删除注意:sb.deleteCharAt(sb.length() - 1); 四、AndroidCRUD业务对SQLite的CRUD操作 1.ContentValues对象的使用 2.android内部insert添加数据的方法,而且values这个不给值也必须要执行,而主键是不是null的其他字段的值是为null 3.insert update query delete 五、单元测试类要注意的 AndroidCRUDService curdService = new AndroidCRUDService(this.getContext()); /* * 注意:getContext必须在我们使用前已经注解进去的,在使用前要实力化,而且是使用后才有上下文 *一般设置为局部对象 */ 六、AndroidManifest.xml的配置 <!-- 配置用户类库android.test.runner测试 --> package jll.sqlitedb; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; /** * *@author Administrator DataBaseHelper是一个访问SQLite的助类,提供两个方面的功能 * 1.getReadableDatebase(),getWriteableDatabase()可以获取SQLiteDatabase对象,通过 * 2.提供了onCreate()和onUpdate()两个回调函数,允许我们常见和升级数据库是进行使用 */ public class DataBaseHelper extends SQLiteOpenHelper { // 给一个默认的SQLite数据库名 private static final String DataBaseName = "SQLite_DB"; private static final int VERSION = 2; // 在SQLiteOpenHelper的子类当中,必须要有的构造函数 public DataBaseHelper(Context context, String name, CursorFacto
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值