Android学习之操作SQLite

基本上写程序总会要和数据库打交道,最近学习android,熟悉了下sqlite,额,也不能说熟悉把,就是大体上看了下,晓得怎么用了,把我写的贴上来。

关于Sqlite数据库这里就不多少了,谷歌下网上一大堆。

 

1 package org.leepood.sqlite;
2
3  import android.content.Context;
4  import android.database.Cursor;
5 import android.database.sqlite.SQLiteDatabase;
6 import android.util.Log;
7 //自定义的数据库通用访问类,简单地写了下创建,插入,查询数据库
8 public class DBAdapter {
9 private Context context;
10 private SQLiteDatabase database;
11 public DBAdapter(Context context)
12 {
13 this.context=context;
14 }
15 //打开或者创建数据库
16 public void OpenOrCreateDB(String DBName)
17 {
18 database=context.openOrCreateDatabase(DBName,0, null);
19
20 }
21 //创建表结构
22 //参数tablaename表示表名
23 //fields表示字段
24 public void CreateTable(String tablename,Object[] fields)
25 {
26 StringBuffer sb=new StringBuffer();
27 String allfields=new String();
28 //构造字段字符串,android的表里必须有个_id字段且为主键,sqlite会忽略其他字段的类型
29 for(Object obj :fields)
30 {
31 allfields+=obj.toString()+",";
32 }
33 allfields=allfields.substring(0, allfields.length()-1);
34 sb.append("Create table if not exists ").append(tablename).append("(_id integer primary key,").append(allfields).append(")");
35 //Log.i("sql", sb.toString());
36 database.execSQL(sb.toString());
37 }
38 //插入数据,fields和values长度必须相同,字段和字段的值一一对应
39 public void Insert(String tablename,Object[] fields,Object[] values)
40 {
41 if(fields.length==values.length)
42 {
43 StringBuffer sb=new StringBuffer();
44 String allfields=new String();
45 String allvalues=new String();
46 for(int i=0;i<fields.length;i++)
47 {
48 allfields+=fields[i].toString()+",";
49 allvalues+="\""+values[i].toString()+"\""+",";
50 }
51 allfields=allfields.substring(0,allfields.length()-1);
52 allvalues=allvalues.substring(0,allvalues.length()-1);
53 sb.append("insert into ").append(tablename).append("(").append(allfields).append(") ").append("values(")
54 .append(allvalues).append(")");
55 //Log.i("sqlinsert", sb.toString());
56 database.execSQL(sb.toString());
57
58
59 }
60 }
61 //查询数据,返回cursor
62 public Cursor getCursor(String tablename,String condition,Object[] fields) throws Exception
63 {
64
65 StringBuffer sb=new StringBuffer();
66 String allfields =new String();
67 if(fields==null)
68 {
69 allfields="*";
70 }
71 else
72 {
73 for(int i=0;i<fields.length;i++)
74 {
75 allfields+=fields[i].toString()+",";
76 }
77 allfields=allfields.substring(0,allfields.length()-1);
78 }
79
80 sb.append("select ").append(allfields).append(" from ").append(tablename).append(" where ").append(condition);
81 Log.i("sqlquery", sb.toString());
82 return database.rawQuery(sb.toString(), null);
83
84 }
85
86 }
87

下面的代码是调用这个类来操作数据库:

 

1 package org.leepood.sqlite;
2
3 import android.app.Activity;
4 import android.database.Cursor;
5 import android.database.sqlite.SQLiteDatabase;
6 import android.os.Bundle;
7 import android.util.Log;
8
9 public class MainActive extends Activity {
10 /** Called when the activity is first created. */
11 @Override
12 public void onCreate(Bundle savedInstanceState) {
13 super.onCreate(savedInstanceState);
14 setContentView(R.layout.main);
15 DBAdapter dbadapter= new DBAdapter(this.getApplicationContext());
16 dbadapter.OpenOrCreateDB("lacus");
17
18
19 dbadapter.CreateTable("leepood", new Object[]{"name","age","sex"});
20 dbadapter.Insert("leepood", new Object[]{"name","age","sex"}, new Object[]{"leepood","13",""});
21 dbadapter.Insert("leepood", new Object[]{"name","age","sex"}, new Object[]{"iagyje","132",""});
22 dbadapter.Insert("leepood", new Object[]{"name","age","sex"}, new Object[]{"lee","33",""});
23 dbadapter.Insert("leepood", new Object[]{"name","age","sex"}, new Object[]{"sunlinyu","23",""});
24 try {
25 Cursor cursor=dbadapter.getCursor("leepood", "1=1", null);
26 while(cursor.moveToNext())
27 {
28 Log.i("cursor_id", Integer.toString(cursor.getInt(0)));
29 Log.i("cursor_name",cursor.getString(1));
30 }
31 //Log.i("coloumncount", Integer.toString(cursor.getColumnCount()));
32 } catch (Exception e) {
33 // TODO Auto-generated catch block
34 e.printStackTrace();
35 }
36
37 }
38 }
最后看下导出来的数据库:

运行效果:

posted @ 2010-11-24 15:23  leepood  阅读(857)  评论(8)    收藏  举报