Android-SQLite

来源:互联网 发布:js计算总金额 编辑:程序博客网 时间:2024/06/05 06:08

最近真实弱爆啦。。。。。发火抓狂

用SQLite存数据,第一次用,呵呵。。。一下内容,不对的别往心里去哈


1、根据书上写的,要创建个DatabaseHelper.java



public class DatabaseHelper extends SQLiteOpenHelper {

        private SQLiteDatabase db;


private static final String dbName="superdatabase.db";//数据库名称
private static final int version=1;//版本号

//====================================构造函数创建数据库 must
public DatabaseHelper(Context context){
super(context,dbName,null,version);
}

//----------------------父类有参构造器  必须添加
public DatabaseHelper(Context context,String name,CursorFactory factory,int version){
super(context,name,factory,version);
}
@Override//-----------------------------创建数据库的表,程序第一次运行时只会调用一次
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
//System.out.println("CREATE DATABASE");//测试被调用一次
//Log.i("CREATE", "CREATE");
String sql_create_silist="create table silist(id integer primary key autoincrement,sId integer,sName verchar(20))";
db.execSQL("DROP TABLE IF EXISTS silist");
db.execSQL(sql_create_silist);
//db.close();//-------------------------- 本来想用完后close的,但是发现这要close后,再调用InsertTable_silist()这些方法时回报错,错误:数据库被关闭。
}


@Override//------------------------------------数据库版本不一致时 会调用这个,(书上说的);该方法,发日志时还没用到
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub


}
public void InsertTable_silist(SQLiteDatabase sqldb,List<HashMap<String, Object>> si_List){//插入数据

db=sqldb;
for(int i=0;i<si_List.size();i++){
sId=Integer.parseInt(si_List.get(i).get("sId").toString());
sName=si_List.get(i).get("sName").toString();

insert="insert into silist (sId,sName)values("+sId+",'"+sName+"')";
db.execSQL(insert);
}


}
//------------------------------
public List<HashMap<String, Object>> SeclectTable(SQLiteDatabase sqldb){//查询 
db=sqldb;

si_List=new ArrayList<HashMap<String, Object>>();
//------------------------------
String sql="select * from silist";
Cursor cursor=db.rawQuery(sql, null);
 
while(cursor.moveToNext()){
hashMap_si=new HashMap<String, Object>();//这里不能用hashMap_si.clear();
hashMap_si.put("sId", cursor.getString(cursor.getColumnIndex("sId")));
hashMap_si.put("sName", cursor.getString(cursor.getColumnIndex("sName")));
si_List.add(hashMap_si);

}
cursor.close();
// db.close();
return si_List;
}


}



2、Activity 中调用

public class Main_page extends Activity{


private DatabaseHelper dbhelper;

private SQLiteDatabase sqldb;


@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.navigationbar_page);
        //启动activity时不自动弹出软键盘
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
        
        //=======================初始化变量  initialize variables
        List_si_insert=new ArrayList<HashMap<String, Object>>();
        hashMap_si_insert=new HashMap<String, Object>();
        List_si_select=new ArrayList<HashMap<String, Object>>();
        
        dbhelper=new DatabaseHelper(this);//
        sqldb = dbhelper.getReadableDatabase();//
        //=======================调用自定义方法  Calling custom method
       
        Update_si_list();//更新超脉数据库
}

  private void Update_si_list(){
//临时测试
hashMap_si_insert.put("sId", 0);
hashMap_si_insert.put("sName", "David");

List_si_insert.add(hashMap_si_insert);
//---------------------------------------------
hashMap_si_insert=new HashMap<String, Object>();//这里也不能clear()
hashMap_si_insert.put("sId", 1);
hashMap_si_insert.put("sName", "黄山");

List_si_insert.add(hashMap_si_insert);
//----------------------------------------------
hashMap_si_insert=new HashMap<String, Object>();
hashMap_si_insert.put("sId", 2);
hashMap_si_insert.put("sName", "李xx");

List_si_insert.add(hashMap_si_insert);
dbhelper.InsertTable_silist(sqldb,List_si_insert);
}

3、Activity 2中调用

public class Start_Page extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start__page);
DatabaseHelper dbhelper=new DatabaseHelper(this);
dbhelper.SeclectTable(dbhelper.getWritableDatabase());

}

}


Finish;

Ps:

String sql_create_silist="create table silist(id integer primary key autoincrement,sId integer,sName verchar(20))";

创建表时,创建主键,id integer primay key;

在往里插入数据时,会报错,“主键唯一”,这个问题百思不得其解;

后来我有就给改成现在这样,主键自增。解决这个问题。。。。。

0 0
原创粉丝点击