SQLite是Android自带的关系型数据库,是一个基于文件的轻量级数据库。Android提供了3种操作数据的方式,SharedPreference(共享首选项)、文件存储以及SQLite数据库。

SQLite数据库文件被保存在/data/data/package_name/databases目录下。
一、创建和删除表
1.创建表
创建表的SQL语句为:
CREATE TABLE userInfo_brief ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, password TEXT);
对应的Java代码为:
final static int VERSION=1;
final static String TABLENAME="userInfo_brief";
final static String ID="id";
final static String NAME="name";
final static String PASSWORD="password";
String sql="CREATE TABLE "+TABLENAME+"("+"ID"+" INTEGER PRIMARY KEY AUTOINCREMENT,"
+NAME+" TEXT,"// Attention:注意SQL语法,每个变量后需要有空格,否则不认识。
+PASSWORD+" TEXT,"
+AGE+" TEXT);";
db.execSQL(sql);
2.删除表
SQL语句为:
DROP TABLE userInfo_brief;
对应的java代码为:
String sql="DROP TABLE "+TABLENAME+";"; db.execSQL(sql);
二、操作数据库中的记录
1.插入记录
insert用法:
SQliteDatabase.insert(String table,String nullColumnHack,ContentValues values)
ContentValues values=new ContentValues();//获取ContentValues对象,类似HashMAP
values.put(DatabaseHelper.NAME, name);//键值对形式保存数据
values.put(DatabaseHelper.PASSWORD, pass);
values.put(DatabaseHelper.AGE, age);
db.insert(DatabaseHelper.TABLENAME, null, values);
2.更新记录
update使用方法:
复制代码 代码如下:
SQliteDatabase.update(String table,ContentValues values,String where-Clause,String[] WhereArgs)
eg:更新表中name为bob的密码
ContentValues values=new ContentValues();
values.put(PASSWORD,"123456");//要更新的数据
db.update(TABLENAME,values,NAME+"=?",new String[]{"bob"});
3.删除记录
delete使用方法:
SQliteDatabase.delete(String table,String where-Clause,String[] WhereArgs)
eg:删除那么为bob的记录
db.delete(TABLENAME,NAME+"=?",new String[]{"bob"});
4.查询记录
1.单表查询
使用SQLiteDatabase.query(7个参数)。
2.多表查询
如果A表中存了用户名和密码,B表中存了用户名和其他具体信息,使用SQLiteQueryBuilder多表查询。
SQL语句:
复制代码 代码如下:
SELECT A.name,A.password,B.age,B.sex FROM A,B WHERE A.name=B.name AND A.name=“bob”
多表查询步骤:
SQLiteQueryBuilder builder=new SQLiteQueryBuilder();//获得对象 builder.setTables(TABLENAME_A,TABLENAME_B);//设置需要查询的表,可多个 builder.appendWhere(TABLENAME_A+"."+NAME+"="TABLENAME_B+"."+NAME);//设置关联属性,表与属性间.隔开,属性以=连接 cursor=builder.query(7个属性);//7属性同单表查询
实例—通过数据库验证登录
1.数据库设计
使用了数据库帮助类,从写onCreate方法
public class DatabaseHelper extends SQLiteOpenHelper {
final static String DATABASENAME="my_database.db";
final static int VERSION=1;
final static String TABLENAME="userInfo_detail";
final static String ID="id";
final static String NAME="name";
final static String PASSWORD="password";
final static String AGE="age";
public DatabaseHelper(Context context) {
super(context, DATABASENAME, null, VERSION);
// TODO 自动生成的构造函数存根
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO 自动生成的方法存根
String sql="CREATE TABLE "+TABLENAME+"("+"ID"+" INTEGER PRIMARY KEY AUTOINCREMENT,"
+NAME+" TEXT,"
+PASSWORD+" TEXT,"
+AGE+" TEXT);";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO 自动生成的方法存根
}
}
2.登录界面
public class LoginActivity extends Activity {
private EditText username;
private EditText password;
private CheckBox autoLogin;
private SharedPreferences sharedPreferences;
private String message;
SQLiteDatabase db;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// MyApplication.getInstance().addActivity(this);
sharedPreferences = this.getSharedPreferences("userInfo",Context.MODE_WORLD_READABLE); //sharedPreferences实例化,用于记住登录状态,判断是否需要自动登录
if (sharedPreferences.getBoolean("AUTO_ISCHECK", false)) { //自动登录
Intent intent = new Intent();
intent.setClass(LoginActivity.this, MainActivity.class);
intent.putExtra("NAME", sharedPreferences.getString("userName", ""));
startActivity(intent);
} else {
setContentView(R.layout.login_main);
initView();
username = (EditText) findViewById(R.id.accountEdittext);
password = (EditText) findViewById(R.id.pwdEdittext);
Button btn_login=(Button) findViewById(R.id.login_in);
Button btn_register=(Button)findViewById(R.id.register);
btn_register.setOnClickListener(new OnClickListener() {//跳转注册界面
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
Intent intent=new Intent(LoginActivity.this, RegisterActivity.class);
startActivity(intent);
}
});
btn_login.setOnClickListener(new OnClickListener() { //判断登录
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
userLogin();
}
});
}
}
/**
* 初始化视图控件
*/
public void initView() {
Log.i(TAG, "初始化视图控件");
username = (EditText) findViewById(R.id.accountEdittext);
password = (EditText) findViewById(R.id.pwdEdittext);
autoLogin = (CheckBox) findViewById(R.id.checkBox1);
// 默认记住用户名
username.setText(sharedPreferences.getString("userName", ""));
}
/**
* 点击登录按钮时触发的方法
*/
public void userLogin() {
//通过帮助类获得数据库对象
DatabaseHelper helper=new DatabaseHelper(getBaseContext());
db=helper.getReadableDatabase();
//得到用户输入信息
String usernameString = username.getText().toString();
String passwordString = password.getText().toString();
//根据用户名查询数据库信息
Cursor cursor=db.query(DatabaseHelper.TABLENAME, new String[]{DatabaseHelper.PASSWORD},
DatabaseHelper.NAME+"=?", new String[]{usernameString}, null, null, null);
//若没有查询到相关信息,不再继续操作
if(cursor.getCount()==0)
{
Toast.makeText(getBaseContext(), "用户名不存在", Toast.LENGTH_SHORT).show();
return;
}
//若用户名存在,则继续操作
cursor.moveToFirst(); //指向第一条记录
String password=cursor.getString(0);//取得密码
//判断密码,若一样则进行跳转
if(password.equals(passwordString)){
if(autoLogin.isChecked()){
Editor editor=sharedPreferences.edit();
editor.putString("userNAME", usernameString);
editor.putBoolean("AUTO_ISCHECK", true);
editor.commit();
}
Intent intent=new Intent(LoginActivity.this, MainActivity.class);
intent.putExtra("NAME",usernameString);
startActivity(intent);
}
else
{
// Editor editor = sharedPreferences.edit();
// editor.putString("userName", usernameString);
// editor.commit();
Toast.makeText(getBaseContext(), "密码错误", Toast.LENGTH_SHORT).show();
}
}
}
3.注册界面
public class RegisterActivity extends Activity {
String name;
String pass;
String age;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO 自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
final EditText et_userName=(EditText)findViewById(R.id.editText_1);
final EditText et_password=(EditText)findViewById(R.id.editText_2);
final EditText et_age=(EditText)findViewById(R.id.editText_3);
Button btn_confirm=(Button)findViewById(R.id.register_confirm);
btn_confirm.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
name=et_userName.getText().toString();
pass=et_password.getText().toString();
age=et_age.getText().toString();
//得到数据库对象
DatabaseHelper helper=new DatabaseHelper(getBaseContext());
db=helper.getWritableDatabase();
//判断用户名是否已存在
Cursor cursor=db.query(DatabaseHelper.TABLENAME, new String[]{DatabaseHelper.NAME},
DatabaseHelper.NAME+"=?", new String[]{name}, null, null, null);
//若查询目标已存在
if(cursor.getCount()>0){
Toast.makeText(getBaseContext(), "用户名已存在", Toast.LENGTH_SHORT).show();
return;
}
//若不存在,则插入数据
ContentValues values=new ContentValues();
values.put(DatabaseHelper.NAME, name);
values.put(DatabaseHelper.PASSWORD, pass);
values.put(DatabaseHelper.AGE, age);
db.insert(DatabaseHelper.TABLENAME, null, values);
//进行跳转
Intent intent=new Intent(RegisterActivity.this, MainActivity.class);
intent.putExtra("NAME", name);
startActivity(intent);
}
});
}
}
4.登录成功界面
public class MainActivity extends Activity {
String name;
String pass;
String age;
private Button logout;
SQLiteDatabase db;
private SharedPreferences sharedPreferences;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// MyApplication.getInstance().addActivity(this);
setContentView(R.layout.main_activity);
logout=(Button) findViewById(R.id.logout);
doQuery();//进行查询
doShow();//进行显示
logout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
removeSharedPreference();
Intent intent=new Intent();
intent.setClass(MainActivity.this, LoginActivity.class);
startActivity(intent);
}
});
}
private void doQuery() {
// TODO 自动生成的方法存根
name=getIntent().getExtras().getString("NAME");
DatabaseHelper helper=new DatabaseHelper(getBaseContext());
db=helper.getReadableDatabase();
//准备查询de属性
String[] columns=new String[]{DatabaseHelper.PASSWORD,DatabaseHelper.AGE};
Cursor cursor=db.query(DatabaseHelper.TABLENAME, columns, DatabaseHelper.NAME+"=?",
new String[]{name}, null, null, null);
cursor.moveToFirst();
while(!cursor.isAfterLast()){//判断是否是最后一条记录
pass=cursor.getString(0);
age=cursor.getString(1);
cursor.moveToNext();
}
}
private void doShow() {
// TODO 自动生成的方法存根
TextView tv_show=(TextView)findViewById(R.id.show1);
tv_show.setText("用户信息如下:\n"+"账户:"+name+"\n密码"+pass+"\n年龄"+age);
}
public void removeSharedPreference() {
sharedPreferences = getSharedPreferences("userInfo", Context.MODE_PRIVATE);
Editor editor = sharedPreferences.edit();
//editor.remove("userName");
editor.remove("AUTO_ISCHECK");
editor.commit();// 提交修改
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# androidsqlite数据库
# android
# sqlite数据库
# 数据库存储
# Android SharedPreferences数据存储详解
# Android数据存储方式操作模式解析
# Android 通过SQLite数据库实现数据存储管理
# Android四种数据存储的应用方式
# Android基础教程数据存储之文件存储
# 详解Android的网络数据存储
# Android 文件数据存储实例详解
# 5种Android数据存储方式汇总
# Android数据存储几种方式讲解
# 自动生成
# 跳转
# 存了
# 判断是否
# 自动登录
# 是一个
# 多个
# 不存在
# 相关信息
# 不认识
# 自带
# 第一条
# 若不
# 数据库中
# 大家多多
# 键值
# 数据库文件
# 使用了
# 目录下
# delete
相关文章:
网站代码制作软件有哪些,如何生成自己网站的代码?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
建站与域名管理如何高效结合?
c++怎么用jemalloc c++替换默认内存分配器【性能】
东莞专业制作网站的公司,东莞大学生网的网址是什么?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
动图在线制作网站有哪些,滑动动图图集怎么做?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
建站之星备案是否影响网站上线时间?
大连网站制作公司哪家好一点,大连买房网站哪个好?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
建设网站制作价格,怎样建立自己的公司网站?
网站制作软件有哪些,制图软件有哪些?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
如何做网站制作流程,*游戏网站怎么搭建?
制作网站的模板软件,网站怎么建设?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
定制建站是什么?如何实现个性化需求?
如何自定义建站之星模板颜色并下载新样式?
开封网站制作公司,网络用语开封是什么意思?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
高端企业智能建站程序:SEO优化与响应式模板定制开发
建站之星各版本价格是多少?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
建站之星后台管理如何实现高效配置?
建站主机与服务器功能差异如何区分?
建站之星后台密码遗忘或太弱?如何重置与强化?
h5在线制作网站电脑版下载,h5网页制作软件?
如何通过虚拟主机快速搭建个人网站?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
香港网站服务器数量如何影响SEO优化效果?
制作电商网页,电商供应链怎么做?
平台云上自主建站:模板化设计与智能工具打造高效网站
宁波自助建站系统如何快速打造专业企业网站?
潮流网站制作头像软件下载,适合母子的网名有哪些?
如何通过二级域名建站提升品牌影响力?
官网网站制作腾讯审核要多久,联想路由器newifi官网
建站之星展会模板:智能建站与自助搭建高效解决方案
已有域名和空间,如何快速搭建网站?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
建站上市公司网站建设方案与SEO优化服务定制指南
建站之星导航菜单设置与功能模块配置全攻略
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
网站制作模板下载什么软件,ppt模板免费下载网站?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
*请认真填写需求信息,我们会在24小时内与您取得联系。