Android学习-----如何使用sqlite对于后台数据交换,sqlite使用例程入门
SQLite 这是一个非常流行的嵌入式数据库。它支持 SQL 查询,和只使用很少的内存。Android 在集成实施 SQLite,所以每 Android 应用程序能够使用 SQLite 数据库。对数熟悉 SQL 的开发者来时。使用 SQLite 相当简单。
能够。因为 JDBC 不适合手机这样的内存受限设备。所以 Android 开发者须要学习新的 API 来使用 SQLite。本文以一个注冊登录Demo简介一下sqlite入门使用。
先上一下执行结果:(请忽略丑陋的界面~~)
以下贴上主要代码,后面分析:
/**
* 登录页面的activity
* @author D_xiao
*
*/
public class MainActivity extends Activity {
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button loginbtn = (Button)findViewById(R.id.loginbtn);
Button regbtn = (Button)findViewById(R.id.regbtn);
db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString()+"/android1.db3", null); //创建或打开数据库
loginbtn.setOnClickListener(new OnClickListener(){
public void onClick(View sourse){
boolean flag = false;
String userName = ((EditText)findViewById(R.id.userEditText)).getText().toString();
String userPassword = ((EditText)findViewById(R.id.passwordEditText)).getText().toString();
try{
Cursor cursor = db.rawQuery("select * from users where name = ? and password = ?",new String[]{userName,userPassword}); if(cursor.getCount()==0){
Intent intentE = new Intent(MainActivity.this,ErrorActivity.class);
startActivity(intentE);
}else{
Intent intentS = new Intent(MainActivity.this,HomeActivity.class);
intentS.putExtra("name", userName);
startActivity(intentS);
}
}catch(SQLiteException se){
Intent intentE = new Intent(MainActivity.this,ErrorActivity.class);
startActivity(intentE);
}
}
});
regbtn.setOnClickListener(new OnClickListener(){
public void onClick(View sourse){
Intent intentReg = new Intent(MainActivity.this,RegActivity.class);
startActivity(intentReg);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
/**
* 注冊Activity
* @author D_xiao
*
*/
public class RegActivity extends Activity {
SQLiteDatabase db;
ListView listView;
Button btn;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reg);
db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString()+"/android1.db3", null);
final String a = this.getFilesDir().toString();
Button regOK = (Button)findViewById(R.id.regOK);
Button backtologin = (Button)findViewById(R.id.backtologin);
regOK.setOnClickListener(new OnClickListener(){
public void onClick(View sourse){
String name = ((EditText)findViewById(R.id.name)).getText().toString();
String password = ((EditText)findViewById(R.id.password)).getText().toString();
TextView suc = (TextView)findViewById(R.id.suc);
try{
db.execSQL("insert into users values(null,? ,?)",new String[]{name,password});
suc.setText("注冊成功。请点取消button返回到登录界面");
}catch(SQLiteException se){
db.execSQL("create table users(_id integer primary key autoincrement,"
+"name varchar(20) ,"
+"password varchar(200))");
db.execSQL("insert into users values(null,?,?)",new String[]{name,password});
suc.setText("注冊成功。请点取消button返回到登录界面");
}
}
});
backtologin.setOnClickListener(new OnClickListener(){
public void onClick(View sourse){
Intent intent = new Intent(RegActivity.this,MainActivity.class);
startActivity(intent);
}
});
}
public void onDestroy(){
super.onDestroy();
if(db!=null&&db.isOpen()){
db.close();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
/**
* 登录成功显示主页,能够发微博 并显示朋友圈
* @author D_xiao
*
*/
public class HomeActivity extends Activity {
SQLiteDatabase db;
ListView listView;
Button btn;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString()+"/android1.db3", null);
listView = (ListView)findViewById(R.id.show);
btn = (Button)findViewById(R.id.send);
btn.setOnClickListener(new OnClickListener(){
Cursor cursor = null;
public void onClick(View sourse){
String weibo = ((EditText)findViewById(R.id.newtext)).getText().toString();
Intent intent = getIntent();
String name = intent.getStringExtra("name");
try{
insertData(db,name,weibo);
//select * from weibo3
cursor = db.rawQuery("select * from weiboa", null);
inflateList(cursor);
}catch(SQLiteException se){
//primary key autoincrement
db.execSQL("create table weiboa(_id integer primary key autoincrement,"
+"name varchar(20) ,"
+"weibo varchar(200))");
insertData(db,name,weibo);
//查询
cursor = db.rawQuery("select * from weiboa", null);
inflateList(cursor);
}finally{
//cursor.close();
}
}
});
}
private void insertData(SQLiteDatabase db,String name,String weibo){
//运行插入语句
db.execSQL("insert into weiboa values(null,?,?)",new String[]{name,weibo});
}
private void inflateList(Cursor cursor){
//填充SimpleCursorAdapter
SimpleCursorAdapter adapter = new SimpleCursorAdapter(HomeActivity.this,R.layout.line,cursor,
new String[]{"name","weibo"},
new int[]{R.id.my_name,R.id.my_weibo},
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
listView.setAdapter(adapter);
}
public void onDestroy(){
super.onDestroy();
if(db!=null&&db.isOpen()){
db.close();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
/**
* username或password错误跳转
* @author D_xiao
*
*/
public class ErrorActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_error); Button backbtn = (Button)findViewById(R.id.Ebackbtn);
backbtn.setOnClickListener(new OnClickListener(){
public void onClick(View sourse){
Intent intentBack = new Intent(ErrorActivity.this,MainActivity.class);
startActivity(intentBack);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
通过此例,能够看出来sqlite和sql server 等数据库的差别联系:
sqlite没有图形界面,也不须要不论什么的配置安装打开连接等等的操作,几句简单的语句就能够完毕增删改查操作。使用起来还是非常方便的。并且sqlite和sql server ,MySQL是有非常多相似的地方的。除了大多数查询语句在sqlite里面都能够用以外,sqlite还有自己的api提供的方法进行查询,这个以后再叙。并且运行语句也非常相似。
比方db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString()+"/android1.db3", null); 这句相当于sql server中的建立连接,所以在使用完以后要关闭连接,都是一样的。
Cursor cursor = db.rawQuery("select * from users where name = ? and password = ?",new String[]{userName,userPassword});这句中的cursor相当于sql server 中的resultSet结思集。
没有图形界面有一点还是比較麻烦的,就是不好操作查看数据表,必需要执行cmd查看,相对来说比較麻烦。请看下篇博文:http://blog.csdn.net/frightingforambition/article/details/24439981
完整Demo:
http://download.csdn.net/detail/u011250851/7248227
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Android学习-----如何使用sqlite对于后台数据交换,sqlite使用例程入门的更多相关文章
- Android:Activity+Fragment及它们之间的数据交换.
Android:Activity+Fragment及它们之间的数据交换 关于Fragment与Fragment.Activity通信的四种方式 比较好一点的Activity+Fragment及它们之间 ...
- 【AS3】Flash与后台数据交换四种方法整理
随着Flash Player 9的普及,AS3编程也越来越多了,所以这次重新整理AS3下几种与后台数据交换方法.1.URLLoader(URLStream)2.FlashRemoting3.XMLSo ...
- [转]Android:Activity+Fragment及它们之间的数据交换(一)
2014-05-18 来源:Android:Activity+Fragment及它们之间的数据交换(一) 简介: 为什么要用Fragment?使用Fragment可以在一个Acti ...
- Java核心知识点学习----多线程 倒计时记数器CountDownLatch和数据交换的Exchanger
本文将要介绍的内容都是Java5中的新特性,一个是倒计时记数器---CountDownLatch,另一个是用于线程间数据交换的Exchanger. 一.CountDownLatch 1.什么是Coun ...
- Android:Activity+Fragment及它们之间的数据交换(一)
简单介绍: 为什么要用Fragment?使用Fragment能够在一个Activity中实现不同的界面. Fragment与Fragment之间的动画切换,远比Activity与Activity之间的 ...
- Android学习笔记_37_ListView批量加载数据和页脚设置
1.在activity_main.xml布局文件中加入ListView控件: <RelativeLayout xmlns:android="http://schemas.android ...
- 零基础Android学习笔记-03 窗口间的数据传递
1.通过全局变量来传递. 新建一个全局的类继承于Application package com.example.helloworld; import android.app.Application; ...
- Android学习手记(3) Activity间传递数据
1. 简单数据传递 建立两个Activity,名称分别为MainActivity和TheAty,在MainActivity中新建一个Button,id为btnStartAty.在TheAty中新建一个 ...
- Android学习笔记_8_使用SharedPreferences存储数据
1.SharedPreferences介绍: Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数.使用SharedPrefer ...
随机推荐
- Activity的创建和使用
Activity: 1:创建一个类继承Activity或者它的子类 public class MainActivity extends Activity { @Override protected v ...
- 新买一款打印机hp5525N
11900 RMB 彩色.激光.彩打. 让法国的工艺工程师给改成法语的了.
- Android移动view动画问题
http://www.cnblogs.com/eoiioe/archive/2012/08/29/2662546.html Android写动画效果不是一般的麻烦,网上找了好久,终于解决了动画的问题, ...
- UVALive 6584 Escape (Regionals 2013 >> Europe - Central)
题目 给出一棵树,每个节点有一个怪物或血药,遇到怪物必须打,打完后扣掉一定的血量. 一开始英雄的血量为\(0\),当血量小于\(0\)时就挂了. 给出英雄的起点和终点,问能否成功到达终点. 算法 这题 ...
- HTTP协议--状态码
HTTP状态码负责表示客户端HTTP请求返回的结果.标记服务器端的处理是否正常.通知出现的错误等工作. 常用状态码共分5大类: 1XX:Informational,信息性状态码,接收的请求正在处理. ...
- Java7新特性(一)Coin
1.语法糖 数字下划线 2.switch语句中的String 3.multicatch 4.final重抛 对比上份代码 5.try-with-resources(TWR) AutoC ...
- perl 类里的函数调用其他类的函数
perl 类里的函数调用其他类的函数: package Horse; use base qw(Critter); sub new { my $invocant = shift; my $class = ...
- hdu4431 Mahjong
Mahjong Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HTML学习笔记(七)
1. 假设想让div中的内容(content)垂直居中,能够将line-height的值设置与div的高度相等来实现. 2. 超伪类链接的四种形式: watermark/2/t ...
- android 定时拍照并发送微博
最近在做android方面的开发,下面是android自动对焦并拍照的小例子: package com.comnvi.camera; import java.io.File; import java. ...