SQLite操作数据库的步骤
Posted tea_year
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLite操作数据库的步骤相关的知识,希望对你有一定的参考价值。
视频课:https://edu.csdn.net/course/play/7621
package com.example.dbdemo;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;
public class MyDatabaseHelper extends SQLiteOpenHelper {
//创建自定义数据库操作类的两个成员变量,静态常量字符串
public static final String CREATE_BOOK="create table book(id integer primary key autoincrement,author text,price real,pages integer,name text)";
public static final String CREATE_CATEGORY="create table category(id integer primary key autoincrement"+
",category_name text,category_code integer)";
private Context mContext; //上下文对象;
public MyDatabaseHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
mContext=context; //给当前上下文对象赋值
}
//1.创建数据库的方法
@Override
public void onCreate(SQLiteDatabase db) {
//使用db的execSQL方法,来执行创建数据表的方法
db.execSQL(CREATE_BOOK);
db.execSQL(CREATE_CATEGORY);
Toast.makeText(mContext,"创建数据成功!",Toast.LENGTH_SHORT).show();
}
//更新数据的方法;更新数据内容的方法;因为已经有了数据库,则不会再次创建数据库 ;
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists book"); //如果存在,则删除!!!
db.execSQL("drop table if exists category");
onCreate(db);
}
}
package com.example.dbdemo;
import android.app.Activity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
//1.创建主活动类的成员变量是数据库操作类
private MyDatabaseHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//---------------------------在主活动的方法里面来调用写数据的方法;
//如何让调用onUpgrade()方法,使用版本号,即第四个参数
dbHelper=new MyDatabaseHelper(MainActivity.this,"BookStore.db",null,2);
Button btnDb=(Button)findViewById(R.id.btnDb);
btnDb.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
dbHelper.getWritableDatabase();
}
});
//------------------为插入数据,编写相应的代码-----------------
//SQLiteDatabase对象,借助这个对象,就可以对数据进行CRUD操作!
//SQLiteDatabase类提供了一个insert()方法,这个方法专门用于对数据进行添加数据。它接受三个参数,第一个参数是表名,我们希望向哪个表添加数据,这里就传入该表的名字
//第二个参数用于在未指定给某些可为空的列自动赋值NULL,一般我们用不到这个功能;
//第三个参数是一个ContentValues对象,它提供了一系列的put()方法重载,用于向ContentValues中添加数据,只需要将表中的每个列名以及相应的待添加数据传入即可
Button btnAddData=(Button)findViewById(R.id.btnAddData);
btnAddData.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
SQLiteDatabase db=dbHelper.getWritableDatabase(); //返回一个SQLiteDatabase对象,可以对sqlite数据库进行操作;
ContentValues values=new ContentValues();
//开始组装第一条数据
values.put("name", "魔兽");
values.put("author", "张");
values.put("pages", 454);
values.put("price", 16.96);
long i1=db.insert("Book", null,values); //插入第一条数据;
values.clear(); //清楚内容值对象里面的数据;
values.put("name", "JQuery");
values.put("author", "li.sir");
values.put("pages", 510);
values.put("price", 19.95);
long i2=db.insert("Book",null,values); //插入第二条数据;
if(i1!=-1){
Toast.makeText(MainActivity.this, "第一条数据插入成功", Toast.LENGTH_LONG).show();
}
if(i2!=-1){
Toast.makeText(MainActivity.this, "第一条数据插入成功", Toast.LENGTH_LONG).show();
}
}
});
//针对数据进行更新;
Button btnUpdateData=(Button)findViewById(R.id.btnUpData);
btnUpdateData.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
SQLiteDatabase db=dbHelper.getWritableDatabase(); //获得SQLiteDatabase对象;
ContentValues values=new ContentValues(); //获得内容值对象;
values.put("price", 188);
int i3=db.update("Book", values,"name=?",new String[]{"魔兽"});
//update(表名 ,值对象,列名,确定原来的哪一行数据
if(i3!=0){
Toast.makeText(MainActivity.this, "数据修改成功", Toast.LENGTH_LONG).show();
}
}
});
//-------------------使用删除按钮,对数据删除------------
Button btnDeleteData=(Button)findViewById(R.id.btnDeleteData);
btnDeleteData.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
SQLiteDatabase db=dbHelper.getWritableDatabase(); //获得SQLiteDatabase对象db
int i4=db.delete("Book", "pages>?", new String[]{"500"});
//delete(表名,哪个参数,具体值)
Toast.makeText(MainActivity.this, "数据删除成功"+i4, Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
以上是关于SQLite操作数据库的步骤的主要内容,如果未能解决你的问题,请参考以下文章
当我从用户获取数据并将其保存到 SQLite 数据库中时,我应该怎么做才能使列表视图在片段中工作
如果我想从另一个片段中添加书签,为啥我的书签单词没有保存到 sqlite 数据库?
Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段
Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段