文档章节

SQLite介绍,及一个关于SQLite登陆。注册的实例

jacky_123
 jacky_123
发布于 2015/01/22 17:16
字数 746
阅读 236
收藏 0

Sqlite的介绍  Sqlite的初步认识

Sqlite总体来讲是一个易上手的优质轻量级数据库,拥有事务,锁,游标,savepoint等一般DBMS数据库的特性,更令人惊艳的是支持WAL(write ahead log)模式,对于轻量级DB来说优势还是比较明显的,当然也会有一些局限性,如高并发的读写,SQL标准不全等. 在Android开发中默认的保存路径为:/data/data/your.app.package/databases/your-db-name

getWritableDatabase()和getReadableDatabase()的区别:

 调用getReadableDatabase()方法先执行getWritableDatabase()读写方式打开数据库,
倘若使用如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库.

客户端工具 
感觉sqlite expert和sqlite develop还是不错的,expert的最新版本3.4.11。下载地址http://www.sqliteexpert.com/download.html
有收费版和免费版区分,收费版多了加密支持,以及lua和pascal语言支持,其他一样 

 

存储类型:

每个存放在sqlite数据库中(或者由这个数据库引擎操作)的值都有下面中的一个存储类

l  NULL,值是NULL

l  INTEGER,值是有符号整形,根据值的大小以1,2,3,4,68字节存放

l  REAL,值是浮点型值,以8字节IEEE浮点数存放

l  TEXT,值是文本字符串,使用数据库编码(UTF-8UTF-16BE或者UTF-16LE)存放

l  BLOB,只是一个数据块,完全按照输入存放(即没有准换)

 

如何删除已经建立起来的数据库:

数据库在本地是以文件的形式保存的,删除数据库跟删除文件步骤是一样的。

final File file = context.getDatabasePath(DATABASE_NAME);

file.delete();

 

 

实例:

LoginActivity.java:

public class LoginActivity extends Activity {
 EditText username;
 EditText password;
 Button login,register;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.main);
  findViews();
 }
 private void findViews() {
  username=(EditText) findViewById(R.id.username);
  password=(EditText) findViewById(R.id.password);
  login=(Button) findViewById(R.id.login);
  register=(Button) findViewById(R.id.register);
  login.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
    String name=username.getText().toString();
    String pass=password.getText().toString();
    Log.i("TAG",name+"_"+pass);
    UserService uService=new UserService(LoginActivity.this);
    boolean flag=uService.login(name, pass);
    if(flag){
     Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_LONG).show();
    }else{
     Toast.makeText(LoginActivity.this, "登录失败", Toast.LENGTH_LONG).show();
    }
   }
  });
  register.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
    Intent intent=new Intent(LoginActivity.this,RegisterActivity.class);
    startActivity(intent);
   }
  });
 }
}

UserService.java:

封装了对数据库的直接操作,提供给外部

public class UserService {

 private DatabaseHelper dbHelper;

 public UserService(Context context){

  dbHelper=new DatabaseHelper(context);

 }

 

 //登录用

 public boolean login(String username,String password){

  SQLiteDatabase sdb=dbHelper.getReadableDatabase();

  String sql="select * from user where username=? and password=?";

  Cursor cursor=sdb.rawQuery(sql, new String[]{username,password});  

  if(cursor.moveToFirst()==true){

   cursor.close();

   return true;

  }

  return false;

 }

 //注册用

 public boolean register(User user){

  SQLiteDatabase sdb=dbHelper.getReadableDatabase();

  String sql="insert into user(username,password,age,sex) values(?,?,?,?)";

  Object obj[]={user.getUsername(),user.getPassword(),user.getAge(),user.getSex()};

  sdb.execSQL(sql, obj); 

  return true;

 }

}

DatabaseHelper.java:

继承自android.database.sqlite.SQLiteOpenHelper 创建数据库

public class DatabaseHelper extends SQLiteOpenHelper {
 static String name="user.db";
 static int dbVersion=1;
 public DatabaseHelper(Context context) {
  super(context, name, null, dbVersion);
 }
 //只在创建的时候用一次
 public void onCreate(SQLiteDatabase db) {
  String sql="create table user(id integer primary key autoincrement,username varchar(20),password varchar(20),age integer,sex varchar(2))";
  db.execSQL(sql);
 }
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 }
}

© 著作权归作者所有

上一篇: 回调函数
jacky_123
粉丝 3
博文 55
码字总数 26297
作品 0
南通
程序员
私信 提问
SQLite第四课 sqlite3_set_authorizer使用例子

例子说明 可以将一个如下面格式的my_authorizer函数,注册到SQLite语句的解释执行语句当中,并且最先被执行,就像是一个钩子,对sql语句进行一些访问的控制,类似于网络数据包的netfilter。 ...

fengyuzaitu
08/16
0
0
adminer 4.2.5版本打开Sqlite真是如狗啃刺猬般没办法........提示“Implement login() method to use SQLite.”

之前的版本里面,sqlite在adminer里是直接打开的,到4.2.5版本后,sqlite打开变成这个提示了“Implement login() method to use SQLite.”,查了一堆资料也没个头绪。 最后在官方的bug反馈渠...

鱼米三香
2016/12/02
1K
2
一个小时内学习 SQLite 数据库

1. 介绍 SQLite 是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。 其特点是高度便携、使用方便、结构紧凑、高效、可靠。 与其他数据库管理系统不同,SQLite 的...

红薯
2012/05/11
54.3K
59
SQLite 授权动作编码(AuthorizerAction Codes)

本文主要与注册授权回调函数相关:sqlite3setauthorizer 详细的调用方式,请参考其他的章节!! 摘自:https://www.sqlite.org/c3ref/caltertable.html /*3rd 4th / #define SQLITECREATEIND...

fengyuzaitu
08/15
0
0
Android 开发中使用 SQLite 数据库

SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都...

红薯
2010/08/22
67.6K
32

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
35分钟前
4
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
37分钟前
5
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部