背景:
??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结果显示
??????