您的位置:首页 > 移动开发 > Android开发

Android学习之操作SQLite

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

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

package org.leepood.sqlite;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
//自定义的数据库通用访问类,简单地写了下创建,插入,查询数据库
public class DBAdapter  {
private Context context;
private SQLiteDatabase database;
public DBAdapter(Context context)
{
this.context=context;
}
//打开或者创建数据库
public void OpenOrCreateDB(String DBName)
{
database=context.openOrCreateDatabase(DBName,0, null);

}
//创建表结构
//参数tablaename表示表名
//fields表示字段
public void CreateTable(String tablename,Object[] fields)
{
StringBuffer sb=new StringBuffer();
String allfields=new String();
//构造字段字符串,android的表里必须有个_id字段且为主键,sqlite会忽略其他字段的类型
for(Object obj :fields)
{
allfields+=obj.toString()+",";
}
allfields=allfields.substring(0, allfields.length()-1);
sb.append("Create table if not exists ").append(tablename).append("(_id integer primary key,").append(allfields).append(")");
//Log.i("sql", sb.toString());
database.execSQL(sb.toString());
}
//插入数据,fields和values长度必须相同,字段和字段的值一一对应
public void Insert(String tablename,Object[] fields,Object[] values)
{
if(fields.length==values.length)
{
StringBuffer sb=new StringBuffer();
String allfields=new String();
String allvalues=new String();
for(int i=0;i<fields.length;i++)
{
allfields+=fields[i].toString()+",";
allvalues+="\""+values[i].toString()+"\""+",";
}
allfields=allfields.substring(0,allfields.length()-1);
allvalues=allvalues.substring(0,allvalues.length()-1);
sb.append("insert into ").append(tablename).append("(").append(allfields).append(") ").append("values(")
.append(allvalues).append(")");
//Log.i("sqlinsert", sb.toString());
database.execSQL(sb.toString());

}
}
//查询数据,返回cursor
public Cursor getCursor(String tablename,String condition,Object[] fields) throws Exception
{

StringBuffer sb=new StringBuffer();
String allfields =new String();
if(fields==null)
{
allfields="*";
}
else
{
for(int i=0;i<fields.length;i++)
{
allfields+=fields[i].toString()+",";
}
allfields=allfields.substring(0,allfields.length()-1);
}

sb.append("select ").append(allfields).append(" from ").append(tablename).append(" where ").append(condition);
Log.i("sqlquery", sb.toString());
return database.rawQuery(sb.toString(), null);

}

}


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

package org.leepood.sqlite;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;

public class MainActive extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DBAdapter dbadapter= new DBAdapter(this.getApplicationContext());
dbadapter.OpenOrCreateDB("lacus");
17
18
dbadapter.CreateTable("leepood", new Object[]{"name","age","sex"});
dbadapter.Insert("leepood", new Object[]{"name","age","sex"}, new Object[]{"leepood","13","男"});
dbadapter.Insert("leepood", new Object[]{"name","age","sex"}, new Object[]{"iagyje","132","男"});
dbadapter.Insert("leepood", new Object[]{"name","age","sex"}, new Object[]{"lee","33","男"});
dbadapter.Insert("leepood", new Object[]{"name","age","sex"}, new Object[]{"sunlinyu","23","男"});
try {
Cursor cursor=dbadapter.getCursor("leepood", "1=1", null);
while(cursor.moveToNext())
{
Log.i("cursor_id", Integer.toString(cursor.getInt(0)));
Log.i("cursor_name",cursor.getString(1));
}
//Log.i("coloumncount", Integer.toString(cursor.getColumnCount()));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}


最后看下导出来的数据库:



运行效果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: