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





版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-10-10 15:44:28

Android学习-----如何使用sqlite对于后台数据交换,sqlite使用例程入门的相关文章

Java核心知识点学习----多线程 倒计时记数器CountDownLatch和数据交换的Exchanger

本文将要介绍的内容都是Java5中的新特性,一个是倒计时记数器---CountDownLatch,另一个是用于线程间数据交换的Exchanger. 一.CountDownLatch 1.什么是CountDownLatch? 倒计时计数器,调用CountDownLatch对象的CountDown()方法就将计数器减一,当计数到达0时,则所有等待者或者全部等待者开始执行. 2.如何用? new CountDownLatch(1); 直接new,其构造函数必须传一个int类型的参数,参数的意思是: c

[转]Android:Activity+Fragment及它们之间的数据交换(一)

2014-05-18         来源:Android:Activity+Fragment及它们之间的数据交换(一)   简介: 为什么要用Fragment?使用Fragment可以在一个Activity中实现不同的界面.Fragment与 Fragment之间的动画切换,远比Activity与Activity之间的动画切换变化方式多.很多时候,我们通过使用一个Activity,切换 多个Fragment.本次博客,主要列举一下Fragment与它的Activity之间进行数据交换的方式.

Import CSV data to Sqlite. 导入CSV数据到SQLite.

Import CSV data to Sqlite. 导入CSV数据到SQLite. 在做数据导入的时候,只需要理清楚两点就可以了. 1, 提取 Title 作为field name. 2, 数据写入数据池. 这里SQLite很好的为我们解决了这类问题. fieldsnames 属性很高的解决了 提取title的问题, 而数据池, sqlite insert接受 包涵元组的list 数据集.这里一个元组,就是一行数据. 最后, 其实我们要实现的就是段 SQL: DROP TABLE IF EXI

Android:Activity+Fragment及它们之间的数据交换(一)

简介: 为什么要用Fragment?使用Fragment可以在一个Activity中实现不同的界面.Fragment与Fragment之间的动画切换,远比Activity与Activity之间的动画切换变化方式多.很多时候,我们通过使用一个Activity,切换多个Fragment.本次博客,主要列举一下Fragment与它的Activity之间进行数据交换的方式. 1.Fragment中通过getActivity()然后进行强制转化,调用Activity中的公有方法 ((XXXXActivit

第三次作业-前端与后台数据交换问题

问题:JS前端取得并解析后台服务器返回的JSON数据方法有哪些? 前一段时间,我在做一个有关美食的Web App,很多商家的店铺信息以及一些用户评论信息等内容需要从后台来获取,如果仅仅只是静态布局的话就太过于死板,但是在进行前端与后端的数据交换时遇到不少问题,如题目JS前端取得并解析后台服务器返回的JSON数据的方法就是问题之一. 在解决这个问题之前,首先需要了解JavaScript eval()函数,eval(string)函数可计算某个字符串,并执行其中JavaScript代码. JS前端取

Android学习笔记(四七):Content Provider初谈和Android联系人信息

Content Provider 在数据处理中,Android通常使用Content Provider的方式.Content Provider使用Uri实例作为句柄的数据封装的,很方便地访问地进行数据的增.删.改.查的操作.Android并不提供所有应用共享的数据存储,采用content Provider,提供简单便捷的接口来保持和获取数据,也可以实现跨应用的数据访问.简单地说,Android通过content Provider从数据的封装中获取信息. Content provider使用Uri

Android 学习笔记之如何使用SQLite数据库来保存数据...

PS:最近一阵子都在为考试复习...坑爹的计算机网络,复习了3天,最后该不会的还是不会...明天还考英语...真蛋疼... 学习内容: 1.使用SQLite数据库来保存数据... SQLite:   SQLite一个轻量级的数据库,数据库这东西就是为了保存大量数据而存在的一个工具,SQLite支持SQL语言,其实和Mysql差不多,语句基本都是一样的,增删改查也非常的方便...SQLite独立性非常的好,使用SQLite不需要安装...不依赖与任何的引擎就可以独立的去执行...感觉这一点还是非常

Android学习笔记(四二):SQLite、ListView、ContextMenu

继续上一个例子,结合ListView中对SQLite进行操作. 通过CursorAdapter在ListView中的数据呈现 在上一个例子中,我们可以对SQLite中的数据库进行增删改查,将数据读到游标Cursor中,然后一一读出.在Android中可以通过CursorAdapter直接将数据映射到ListView中,如下处理: public class Chapter22Test1 extends ListActivity{    private SQLiteDatabase  db = nu

Android学习之简单的数据存储

在Android中,数据存储是开发人员不可以避免的.Android为开发者提供了很多的存储方法,在前面的博客中,已经讲述了sqlite存储数据.今天将介绍用SharedPreferences来存储数据,它可以将数据保存在应用软件的私有存储区,存储区的数据只能被写入这些数据的软件读取.SharedPreference通过键值对的方法存储数据. 1.SharedPreference存储简单数据 SharedPreference可以存放简单的String.Boolean.Int等对象. 1 <Rela