您的位置:首页 > 数据库

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

2015-01-22 00:00 399 查看
摘要: SQLite介绍

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,6或8字节存放
l REAL,值是浮点型值,以8字节IEEE浮点数存放
l TEXT,值是文本字符串,使用数据库编码(UTF-8,UTF-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) {
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SQLite