SQLite介绍,及一个关于SQLite登陆。注册的实例
2015-01-22 00:00
399 查看
摘要: SQLite介绍
倘若使用如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库.
客户端工具
感觉sqlite expert和sqlite develop还是不错的,expert的最新版本3.4.11。下载地址http://www.sqliteexpert.com/download.html,
有收费版和免费版区分,收费版多了加密支持,以及lua和pascal语言支持,其他一样
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,只是一个数据块,完全按照输入存放(即没有准换)
UserService.java:
封装了对数据库的直接操作,提供给外部
DatabaseHelper.java:
继承自android.database.sqlite.SQLiteOpenHelper 创建数据库
Sqlite的介绍 Sqlite的初步认识
Sqlite总体来讲是一个易上手的优质轻量级数据库,拥有事务,锁,游标,savepoint等一般DBMS数据库的特性,更令人惊艳的是支持WAL(write ahead log)模式,对于轻量级DB来说优势还是比较明显的,当然也会有一些局限性,如高并发的读写,SQL标准不全等. 在Android开发中默认的保存路径为:/data/data/your.app.package/databases/your-db-namegetWritableDatabase()和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) { } }
相关文章推荐
- Struts 注册、登陆、email实例解析
- 有关于在Java 类的静态初始化块中创建一个自身实例的问题。
- 关于动态生成WML文件的一个Java实例(3)
- 关于AJAX异步处理的简单介绍及原创JSP应用实例
- 给大家介绍一个不错的网站(关于gif动画的)
- 通过一个实例来介绍JSF技术
- 关于用javamail 包 写的一个简易的发送电子邮件的实例
- 关于动态生成WML文件的一个Java实例(1)
- 介绍一个关于如何使用vs2005构建三层系统的教程
- 解决了一个关于mysql登陆的问题.
- 利用HttpModuler实现WEB程序同一时间只让一个用户实例登陆
- 一个简单的关于权限判断登陆的javaBean文件
- 一个简单的关于权限判断登陆的javaBean文件
- 关于动态生成WML文件的一个Java实例(2)
- 利用HttpModuler实现WEB程序同一时间只让一个用户实例登陆
- 一个关于工作流的网站介绍
- JSP-一个理解MVC架构的简单的登陆、注册例子
- 一个基于实例(向量)的关于开发跨版本ActionScript应用程序的讨论
- 关于制作一个通用的DOS批处理段注释命令的思路介绍
- 关于ADO.NET-创建一个登陆窗口 连接SQLServer2000