SQLite数据库的使用详解2
来源:互联网 发布:淘宝卖家客户端下载 编辑:程序博客网 时间:2024/05/29 14:51
SQLite是一个小型的数据库,占用资源低,处理速度快等优点。
首先新建一个MySQLiteOpenHelper类然后继承SQLiteOpenHelper。新建一个构造方法,里面有四个参数,第二个是数据库的名字,可命名为xx.db,第三个factory 游标工厂 用来创建一个游标默认值是null,第四个参数是版本号,最低为1.onCreate只有第一次创建的时候才会执行,onUpgrade是版本更新的时候才会调用。
db.execSQL("create table student1(_id integer primary key autoincrement,name varchar(20),gender varchar(30))");这里是创建一个student1 的数据库,有id、key、name、gender,这个可根据自己需求定义。
下面是完整代码
package com.example.apple.sqlitedemo;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;/** * Created by apple on 16/12/28. */public class MySQLiteOpenHelper extends SQLiteOpenHelper{ private final String TAG = "MySQLiteOpenHelper"; public MySQLiteOpenHelper(Context context) { //name数据库名字, //factory 游标工厂 用来创建一个游标默认值是null //version 版本号 最低1 super(context, "student.db", null, 4); } /** * 只有第一次创建的时候才调用执行 * @param db */ @Override public void onCreate(SQLiteDatabase db) { Log.e(TAG,"onCreate"); db.execSQL("create table student1(_id integer primary key autoincrement,name varchar(20),gender varchar(30))"); } /** * 数据库版本更新时调用 * @param db * @param oldVersion * @param newVersion */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.e(TAG,"onUpgrade"); }}
2、新建一个bean类用于存储数据,这里定义了就name 和gen der
package com.example.apple.sqlitedemo.bean;/** * Created by apple on 16/12/28. */public class StudentData { private String name; private String gender; public StudentData(String name, String gender) { this.name = name; this.gender = gender; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; }}3、新建一个StudentDao的类用于实现增删改查
首先创建一个构造方法,在构造方法中初始化SQLiteOpenHelper,用于新建一个数据库,具体实现方法可看代码,注释得很详细了
package com.example.apple.sqlitedemo.dao;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.util.Log;import com.example.apple.sqlitedemo.MySQLiteOpenHelper;import com.example.apple.sqlitedemo.bean.StudentData;import java.util.ArrayList;import java.util.List;/** * Created by apple on 16/12/28. */public class StudentDao { public MySQLiteOpenHelper mySQLiteOpenHelper; private final String TAG = "StudentDao"; //创建构造方法,在构造方法中初始化SQLiteOpenHelper public StudentDao(Context context) { mySQLiteOpenHelper = new MySQLiteOpenHelper(context); } /** * 往数据库中添加数据 * @param name * @param gender */ public void add(String name,String gender){ SQLiteDatabase db = mySQLiteOpenHelper.getWritableDatabase(); //? 为占位符 db.execSQL("insert into student1(name,gender) values(?,?)",new Object[]{name,gender}); db.close();//关闭数据库 } /** * 删除数据 * @param name */ public void delete(String name){ SQLiteDatabase db = mySQLiteOpenHelper.getWritableDatabase(); db.execSQL("delete from student1 where name = ?",new Object[]{name}); db.close();//关闭数据库 } /** * 更新数据库数据 * @param name * @param gender */ public void update(String name,String gender){ SQLiteDatabase db = mySQLiteOpenHelper.getWritableDatabase(); db.execSQL("update student1 set gender = ? where name = ?", new Object[]{gender,name}); db.close();//关闭数据库 } /** * 查询数据库数据 * @return */ public List<StudentData> query(){ List<StudentData> studentDatas = new ArrayList<>(); SQLiteDatabase db = mySQLiteOpenHelper.getWritableDatabase(); //通过rawQuery 查询拿到一个cursor Cursor cursor = db.rawQuery("select * from student1",new String[]{}); //通过cursor获取所在的索引值 while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex("name")); String gender = cursor.getString(cursor.getColumnIndex("gender")); studentDatas.add(new StudentData(name,gender)); Log.e(TAG,"name="+name+" gender="+gender); } return studentDatas; }}4、最后引用测试是否可以实现功能,先写一个测试布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/input_data" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/add" android:layout_marginTop="10dip" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="添加" /> <Button android:id="@+id/delete" android:layout_marginTop="10dip" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="删除" /> <Button android:id="@+id/update" android:layout_marginTop="10dip" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="修改" /> <Button android:id="@+id/query" android:layout_marginTop="10dip" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="查找" /></LinearLayout>初始化StudentDao后就可以调用里面的方法测试,具体代码
package com.example.apple.sqlitedemo;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.EditText;import com.example.apple.sqlitedemo.bean.StudentData;import com.example.apple.sqlitedemo.dao.StudentDao;import java.util.List;public class MainActivity extends AppCompatActivity implements View.OnClickListener{ //private MySQLiteOpenHelper helper; private Button add; private Button delete; private Button update; private Button query; private EditText inputData; private final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { /** * name 数据库名字 * mode 权限模式 * factroy 游标工厂 */// SQLiteDatabase db = this.openOrCreateDatabase("ning",MODE_PRIVATE,null);// db.execSQL("create table student(_id integer primary key autoincrement,name varchar(30),sex varchar(30))");// db.execSQL("insert into student (name,sex) values(?,?)",new Object[18]); //实例化SQLiteOpenHelper对象,这个时候数据库还没创建出来 // helper = new MySQLiteOpenHelper(this); //创建一个可读可写数据库 // SQLiteDatabase writeDatabase = helper.getWritableDatabase(); //创建一个只可读的数据库 //SQLiteDatabase readDatabase = helper.getReadableDatabase(); add = (Button)findViewById(R.id.add); add.setOnClickListener(this); delete = (Button)findViewById(R.id.delete); delete.setOnClickListener(this); update = (Button)findViewById(R.id.update); update.setOnClickListener(this); query = (Button)findViewById(R.id.query); query.setOnClickListener(this); inputData = (EditText)findViewById(R.id.input_data); } @Override public void onClick(View v) { StudentDao dao = new StudentDao(this); switch (v.getId()){ case R.id.add: dao.add("张三","男"); dao.add("李四","男"); dao.add("小明","女"); break; case R.id.delete: dao.delete("小明"); break; case R.id.update: dao.update("李四","女"); break; case R.id.query: List<StudentData> query = dao.query(); for (StudentData studentData : query){ Log.e(TAG,"学生姓名="+studentData.getName()+ "\n学生性别="+studentData.getGender()); } break; default: break; } }}
最后代码下载地址是:http://download.csdn.net/detail/u011324501/9724044
1 0
- SQLite数据库的使用详解2
- SQLite数据库使用详解
- android SQLite数据库的使用介绍详解
- Android数据库SQLite使用详解三 : 数据库的升级
- C#使用SQLite数据库详解
- C#使用SQLite数据库详解
- C#使用SQLite数据库详解
- Android 使用SQLite数据库详解
- android sqlite 数据库使用 详解
- SQLite数据库的使用
- sqlite数据库的使用
- Sqlite数据库的使用
- sqlite数据库的使用
- SQLite数据库的使用
- SQLite数据库的使用
- SQLite数据库的使用
- SQLite数据库的使用
- SQLite数据库的使用
- 六、php正则表达式
- 链表的逆置
- 11g中利用listagg函数实现自动拼接INSERT语句
- cocoapods 那些坑儿~卸载,重装,使用
- 各音视频格式文件下载地址清单分享
- SQLite数据库的使用详解2
- 关于android 5.0转场动画的学习
- Bash on Windows 搭建ESP32开发环境
- Windows PE导出表编程3(暴力覆盖导出函数)
- cmd下的清屏
- 话说linux内核
- udev (简体中文)
- MongoDB 学习二(shell 基本操作)
- python学习笔记-记录程序运行时间