日期:2014-05-16  浏览次数:20491 次

Android连接SQLite数据库的简单例子

背景:

??SQLite是一个非常流行的嵌入式数据库,它提供了一个清爽的?SQL?接口,相当小的内存占用和高速的响应,更?Happy?的是他还是免费的,大家都可以尽情的使用,很多牛叉的公司(诸如?Adobe,Apple,Google,Sun,Symbian?),开源项目(?Mozilla,PHP,Python?)都在产品中装配?SQLite.??

??Android?中,?SQLite?是被集成于?Android?runtime?,每个?Android?应用程序都可以欢快的使用?SQLite?数据库,如果你熟悉?JDBC?,那么这个过程就更安逸了。?

SQLite3?特征?

和传统关系数据库比较?有的:?

?Sql?语句:SELECT(查询),?INSERT(添加数据),?UPDATE(修改数据),?CREATE(创建表),?DROP(删除表)??????

?数据类型:?不区分大小写,TEXT(?文本),?NUMERIC(?数值),?INTEGER(?整型),?REAL(小数), NONE(无类型)?

没有的:??FOREIGN?KEY(外键约束),?RIGHT?OUTER?JOIN,?FULL?OUTER?JOIN, ALTER?TABLE(修改表中的列)

程序:

一、启动eclipse和android虚拟机,用adb shell命令行新建目录、SQLite数据库和表

1 编写runadb.bat

? path D:\程序设计\安卓\eclipse 3.7\android-sdks\platform-tools

? adb shell? (也可在DOS环境中直接输入);

2 新建文件夹

? 在data/data目录下创建cqvie.edu.cn(项目中包的名字),

? mkdir cqvie.edu.cn

? cd cqvie.edu.cn??? 在此目录下创建文件夹databases

? mkdir databases

? cd databases

3 创建数据库

? sqlite3 test.db

? create table 表名(“no” integer,”name” text);??? //创建表

? select * from sqlite_master where type=”table” and name=”表名”;?? //查询表结构

? insert into 表名 values(1,”张三”);

? .explain ON??

? Select * from 表名;??? //查询

二、编写android程序实现表记录的添加与查

1 建立专门用于数据库操作的DBHelper类

在cqvie.edu.cn包上点鼠标右键,新建一个类

?

类的名称是DBHelper,继承自“android.database.sqlite.SQLiteOpenHelper”,基类的名称可以点按钮进行查找

??????? 2 用户界面

? ? ? ? ?

?????? 3 代码编写实现添加查询功能

?????? public void onCreate(Bundle savedInstanceState) {

??????? super.onCreate(savedInstanceState);

??????? setContentView(R.layout.main);

??????? Button btnAdd=(Button) findViewById(R.id.btnAdd);

??????? Button btnQuery=(Button) findViewById(R.id.btnQuery);

??????? btnAdd.setOnClickListener(this);

??????? btnQuery.setOnClickListener(this);

??? }

?

??? public void onClick(View arg0) {

??????? // TODO Auto-generated method stub

??????? DBHelper helper=new DBHelper(this, "test.db", null, 1);

??????? SQLiteDatabase db=helper.getWritableDatabase();

???????

??????? Button btn=(Button)arg0;

??????? int id=btn.getId();

??????? if(id==R.id.btnAdd){

??????????? String sql="insert into count values(2222)";

??????????? db.execSQL(sql);

??????? }

??????? else if(id==R.id.btnQuery){

??????????? Cursor cursor=db.query("count", new String[]{"*"}, "name=?",? new String[]{"2222"}, null, null, null);

??????????? String s="查询结果\n";

??????????? while(cursor.moveToNext()){

?????????????????? int no=cursor.getInt(cursor.getColumnIndex("no"));

??????????????? String name=cursor.getString(cursor.getColumnIndex("name"));

??????????????? s+=no+","+name+"\n";

??????????? }

??????????? EditText Text=(EditText) findViewById(R.id.Text);

??????????? Text.setText(s);

??????? }

??? }

}

?????? 在进行数据库写测试之前,一定要把数据库文件test.db的写权限打开,不然会出错

?????? 在data/data/cqvie.edu.cn/databases目录下写chmod 777 test.db

?????? 当标示符为”#”时,可直接写这句chmod 777 test.db?

?????? 当标示符为”sqlite>”时,要先退出.exit,再写这句chmod 777 test.db

???? 4结果显示

??????</div