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

原创
2015/01/22 17:16
阅读数 422

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) {
 }
}
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部