最近真实弱爆啦。。。。。
用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;
在往里插入数据时,会报错,“主键唯一”,这个问题百思不得其解;
后来我有就给改成现在这样,主键自增。解决这个问题。。。。。