初学Android,数据存储之使用SQLite数据库(四十五)

SQLite数据库有点类似于Access(这是一个让人感觉很蛋疼的数据库,功能实在太弱了),也是一个文件数据库,但它比Access强大得多,甚至支持事务,其用法和MySQL几乎一样

其用法如下

//开始事务
db.beginTransaction();
try
{
       //执行DML语句
       ...
       //调用该方法设置事务成功,否则endTransaction()方法将回滚事务
       db.setTransactionSuccessful();
}
finally
{
       //由事务的标志决定是提交事务还是回滚事务
       db.endTransaction();
}

下面是具体的用法(直接使用sql语句,也有自带的updata/insert/delete的方法,可以供没有学过SQL的人使用,我想这种程序员应该是少之又之吧,可以忽略了,还是自己写SQL语句比较好),API就不列举出来了,没有意思,有空查查就好了


上面已经试着插入了几条记录

下面是上图效果的代码

package WangLi.IO.DBTest;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;


public class DBTest extends Activity
{
	SQLiteDatabase db;
	Button bn = null;
	ListView listView;
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);		
		//创建或打开数据库(此处需要使用绝对路径)
		db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir()
			.toString() + "/my.db3" , null);		
		listView = (ListView)findViewById(R.id.show);
		bn = (Button)findViewById(R.id.ok);
		bn.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View source)
			{
				//获取用户输入
				String title = ((EditText)findViewById(R.id.title))
					.getText().toString();
				String content = ((EditText)findViewById(R.id.content))
					.getText().toString();
				try 
				{
					insertData(db , title , content);
					Cursor cursor = db.rawQuery("select * from news_inf", null);
					inflateList(cursor);
				}
				catch(SQLiteException  se)
				{
					//执行DDL创建数据表
					db.execSQL("create table news_inf(_id integer primary key autoincrement,"
						+ " news_title varchar(50),"
						+ " news_content varchar(255))");
					//执行insert语句插入数据
					insertData(db , title , content);
					//执行查询
					Cursor cursor = db.rawQuery("select * from news_inf", null);
					inflateList(cursor);
				}
			}			
		});		
	}
	private void insertData(SQLiteDatabase db
		, String title , String content)
	{
		//执行插入语句
		db.execSQL("insert into news_inf values(null , ? , ?)"
			, new String[]{title , content});
	}
	private void inflateList(Cursor cursor)
	{
		//填充SimpleCursorAdapter
		SimpleCursorAdapter adapter = new SimpleCursorAdapter(
			DBTest.this , R.layout.line, cursor 
			, new String[]{"news_title" , "news_content"}
			, new int[]{R.id.my_title , R.id.my_content});
		//显示数据
		listView.setAdapter(adapter);
	}
	@Override
	public void onDestroy()
	{
		super.onDestroy();
		//退出程序时关闭SQLiteDatabase
		if (db != null && db.isOpen())
		{
			db.close();
		}
	}
}

使用完以后,要记得关闭数据连接db.close()

同样可以在DDMS中找到刚刚创建的数据库


下面用sqlite3工具来查看刚刚插入的数据

首先就需要设置adb的环境变量,这样就不用tools的路径,可以直接输入adb的命令了

设置adb的环境变量,参考

http://blog.163.com/lingliu_08@126/blog/static/12038445020116129495344/

在Android中使用命令行查看内嵌数据库

http://blog.csdn.net/cjjky/article/details/6447121


下面是我查看数据库的截屏,中文数据为乱码,不能正常的显示出来


下面链接是sqlite3这个工具的使用,有具体的命令用法可以参考

http://yuanzhifei89.iteye.com/blog/1123870


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值