版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linzhihan7410/article/details/53439595
Android平台提供给我们一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类
SQLiteOpenHelper创建的数据库所在位置是在:
手机内存盘里的根目录下/data/data/应用软件包名/databases/
SQLiteOpenHelper类的应用:
流程:
一.创建数据库
二.关闭数据库(在页面关闭的时候使用)
三.创建表
四.添加数据
五.查看数据
六.更新数据
七.把数据和SimpleCursorAdapter适配器绑定
UI设计:主界面 (只提供图片,可自行布局)
ListView item代码(创建一个layout文件,用于Adapter使用的模板布局)
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnCount="3">
<TextView
android:id="@+id/id1"
android:layout_width="60dp"
android:layout_height="20dp"
android:layout_gravity="center"
android:text="Number"/>
<TextView
android:id="@+id/id2"
android:layout_width="80dp"
android:layout_height="20dp"
android:layout_gravity="center"
android:text="Type Name"/>
<TextView
android:id="@+id/id3"
android:layout_width="80dp"
android:layout_height="20dp"
android:layout_gravity="center"
android:text="Place Name"/>
<TextView
android:id="@+id/id4"
android:layout_width="60dp"
android:layout_height="20dp"
android:layout_gravity="center"
/>
<TextView
android:id="@+id/id5"
android:layout_width="60dp"
android:layout_height="20dp"
android:layout_gravity="center"
/>
<TextView
android:id="@+id/id6"
android:layout_width="60dp"
android:layout_height="20dp"
android:layout_gravity="center"
/>
</GridLayout>
Java代码:
//新建一个类文件并且继承SQLiteOpenHelper
public class SqlLite extends SQLiteOpenHelper{
//系统生成的构造方法
public SqlLite(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
//创建表
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
try {
//sql语句(可以参考上一篇博客),注意id需要加上_,这是要使用SimpleCursorAdapter的规定
String sql = "create table Goods(_id integer PRIMARY KEY,name text,place text)";
sqLiteDatabase.execSQL(sql);
}catch (Exception e){
System.out.println(e.getMessage());
}
}
//添加数据方法
public void addData(String s1,String s2){
try {
//sql语句 添加数据
String sql = "insert into Goods(name,place) values(?,?)";
getReadableDatabase().execSQL(sql, new Object[]{s1, s2});
}catch (Exception e){
System.out.println(e.getMessage());
}
}
//查看数据 返回Cursor
public Cursor check(){
Cursor cursor = null;
try{
//sql语句 查找这个表
String sql = "select * from Goods";
cursor = getReadableDatabase().rawQuery(sql,null); //需要表里面所有的数据
}catch (Exception e){
System.out.println(e.getMessage());
}
return cursor;
}
//更新版本
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
System.out.println("oldVersion:"+i+" newVersion"+i1);
}
}
-----------------------------------------------------------------------------------
//主页面 MainActivity文件
public class SqlLiteOpenHelperActivity extends Activity {
//创建一个SqlLite对象
private SqlLite db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sql_lite_open_helper);
//调用SQLiteOpenHelper数据库类 SqlLite为自定义的类,继承于SQLiteOpenHelper
db = new SqlLite(this,"sql.db",null,1);
}
//关闭页面
@Override
protected void onDestroy() {
super.onDestroy();
db.close(); //关闭数据库
}
//添加数据按键事件
public void addOnClick(View v){
//得到EditText,接收用户输入的数据,调用SQLiteOpenHelper数据库类里的addData方法,传入得到的数据
EditText nameEd = (EditText) findViewById(R.id.typeNameEd);
EditText placeEd = (EditText) findViewById(R.id.placeNameEd);
String s1 = nameEd.getText().toString();
String s2 = placeEd.getText().toString();
db.addData(s1,s2);
}
//查看数据按键事件
public void checkOnClick(View v){
//调用SQLiteOpenHelper数据库类里的check方法,得到cursor对象
Cursor cursor = db.check();
//创建SimpleCursorAdapter 把数据和SimpleCursorAdapter适配器绑定
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
this, //当前类
R.layout.goods, //呈现数据的布局文件 就是上面item代码
cursor, //从数据库获得的数据
new String[]{"_id","name","place"}, //要显示的列名
new int[]{R.id.id4,R.id.id5,R.id.id6}, //显示的数据所对应的控件
0 //0表示不监听数据变化 如果要监听,需要加上监听事件
);
//得到主页面的ListView
ListView listView = (ListView) findViewById(R.id.listView);
//加载设置到adapter
listView.setAdapter(adapter);
}
}