Android之SQLite数据库
来源:互联网 发布:cs1.5优化教程视频 编辑:程序博客网 时间:2024/04/30 10:48
android系统里面已经内置了一个SQLite数据库,它是一种轻型的数据库,这个数据库跟我们以前学的数据库都支持sql语句。也是是遵守ACID的关系型数据库管理系统。
想仔细了解SQLite数据库的操作,请可以去官网去学习
https://developer.android.com/training/basics/data-storage/databases.html
在android用SQLite数据库的几部步骤:
- 创建一个类继承SQLiteOpenHelper
- 根据SQLiteOpenHelper的getWritableDatabase()或getReadableDatabase()获取数据库
- 拿到数据库就可以根据qsl语句来操作
布局文件
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:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.edu.androidforsqlite.MainActivity" android:orientation="vertical" android:baselineAligned="false"> <EditText android:id="@+id/name" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入" /> <EditText android:id="@+id/age" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="插入" android:onClick="insert" android:elevation="0dp" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="查询" android:onClick="select" /></LinearLayout>
我们继承SQLiteOpenHelper的MyHelper代码
import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;/**这是数据库帮助类 * Created by Administrator on 2016/9/30. */public class MyHelper extends SQLiteOpenHelper { /** * 这是建person表语句 */ private String sql = "create table person (" + " id integer primary key autoincrement " + ", name " + ", age )" ; public MyHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } /** * 数据库只有第一次创建时调用 * @param db */ @Override public void onCreate(SQLiteDatabase db) { db.execSQL(sql); } /** * 只有数据库版本更新时调用 * @param db * @param oldVersion * @param newVersion */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }}
MainActivity代码
import android.database.sqlite.SQLiteDatabase;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.Toast;import com.example.edu.androidforsqlite.edu.jju.help.MyHelper;public class MainActivity extends AppCompatActivity { private SQLiteDatabase db; private MyHelper helper; private EditText mEtName, mEtAge; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); helper=new MyHelper(MainActivity.this,"song.db",null,1); db = helper.getWritableDatabase();//返回一个SQLiteDatabase实例 initWidgets(); } /** * 初始化各控件 */ private void initWidgets() { mEtAge = (EditText) findViewById(R.id.age); mEtName = (EditText) findViewById(R.id.name); } /** * 插入数据 * * @param view */ public void insert(View view) { String name = mEtName.getText().toString(); String age = mEtAge.getText().toString(); db.execSQL("insert into person (name,age)" + "values(?,?)", new String[]{name, age} ); Toast.makeText(MainActivity.this,"插入成功",Toast.LENGTH_SHORT).show(); } /** * 查询所有数据 */ public void select (View view){ db.rawQuery("select * from person",null); Toast.makeText(MainActivity.this,"查询成功",Toast.LENGTH_SHORT).show(); }}
运行后,我们就可以看到song.db数据库了,然后导出数据库,可以通过第三方软件打开
然后通过sqlite3去查看数据,依次输入命令。
MainActivity代码
import android.database.sqlite.SQLiteDatabase;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.Toast;import com.example.edu.androidforsqlite.edu.jju.help.MyHelper;public class MainActivity extends AppCompatActivity { private SQLiteDatabase db; private MyHelper helper; private EditText mEtName, mEtAge; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); helper=new MyHelper(MainActivity.this,"song.db",null,1); db = helper.getWritableDatabase();//返回一个SQLiteDatabase实例 initWidgets(); } /** * 初始化各控件 */ private void initWidgets() { mEtAge = (EditText) findViewById(R.id.age); mEtName = (EditText) findViewById(R.id.name); } /** * 插入数据 * * @param view */ public void insert(View view) { String name = mEtName.getText().toString(); String age = mEtAge.getText().toString(); db.execSQL("insert into person (name,age)" + "values(?,?)", new String[]{name, age} ); Toast.makeText(MainActivity.this,"插入成功",Toast.LENGTH_SHORT).show(); } /** * 查询所有数据 */ public void select (View view){ db.rawQuery("select * from person",null); Toast.makeText(MainActivity.this,"查询成功",Toast.LENGTH_SHORT).show(); } /** * 修改数据 */ public void update(View view){ //我传进去的数据写死了,我只是给演示下。 db.execSQL("update person set name=?,age=?" ,new String[]{"xiaosong","34"} ); } /** * 删除数据 * @param view */ public void delete(View view){ //根据名字来删除,只是演示下怎么用,关键学会sql语句 db.execSQL("delete from person where name=?" ,new String[]{"song"} ); }}
其实android自带了一些增删改查的方法
增加数据:各参数的意思
1,表名
2, 就是数据库不允许我们插入空行,要给指定一列,当插入数据真为空时,就会为这列设为null。官方的解释如下:
3,是以键值对的方式添加。键必须是你的属性
insert(String table, String nullColumnHack, ContentValues values)
删除数据:各参数的意思
1, 表名 2,条件 3, 条件的值,
delete(String table, String whereClause, String[] whereArgs)
修改数据:各参数的意思
1,表名 2,是你修改的值,是以键值对方式修改的。3, 条件 4,第三个参数的值
update(String table, ContentValues values, String whereClause, String[] whereArgs)
源码下载:
https://github.com/songshuilin/AndroidForBlog/tree/master/androidforsqlite
- Android 之 SQLite 数据库
- Android之SQLite数据库
- Android之SQLite数据库
- Android数据库之SQLite
- Android之SQLite数据库
- Android之SQLite数据库
- Android数据库 之 SQLite数据库
- Android数据库 之 SQLite数据库
- Android数据库 之 SQLite数据库
- Android数据库 之 SQLite数据库
- Android数据库 之 SQLite数据库
- Android数据库 之 SQLite数据库
- Android数据库 之 SQLite数据库
- Android数据库 之 SQLite数据库
- Android数据库 之 SQLite数据库
- Android数据库 之 SQLite数据库
- Android数据库 之 SQLite数据库
- Android数据库 之 SQLite数据库
- Storage Classes in C++ Programming
- 【C/C++语言】指针常量与常量指针的区别
- 【POJ1011】Sticks-DFS+调整法剪枝
- 【myfocus】一款好用的焦点图轮播插件
- 62.Search in Rotated Sorted Array-搜索旋转排序数组(中等题)
- Android之SQLite数据库
- 开发中乱码问题
- 图
- Android版本下载以及切换之 git使用
- Java之接口
- hihocoder 1384 the book list
- 管道流
- Java版的最长公共子序列
- C++SGI版本STL内存管理