前一陣子做了一個小項目,關於android的,想記錄一下學到的一些知識,做成一個小系列吧,算是對自己這一個多月來的見證。首先說明,這些知識也都是從網上各處學習來的,我自己做了一些小整理。 1.SQLite資料庫 之前用的資料庫是MySQL和SQLServer,還用過oracle,雖然不是很精通,這次 ...
前一陣子做了一個小項目,關於android的,想記錄一下學到的一些知識,做成一個小系列吧,算是對自己這一個多月來的見證。首先說明,這些知識也都是從網上各處學習來的,我自己做了一些小整理。
1.SQLite資料庫
之前用的資料庫是MySQL和SQLServer,還用過oracle,雖然不是很精通,這次第一次接觸SQLite,感覺用起來很方便,直接在android項目里寫一個DBHelper類來繼承SQLiteOpenHelper就行。但是有些功能還是有局限性,在定義數據類型的時候,string就不對,而text就對,還有無法寫double等類型,雖然說會自動轉換,個人感覺還是會有些不方便。
public class DBHelper extends SQLiteOpenHelper {
private static DBHelper dbHelper = null;
private final static String DATABASE_NAME="car.db";
private final static int DATABASE_VERSION=1;
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
public static DBHelper getDBHelper(Context context){
if(dbHelper==null){
dbHelper = new DBHelper(context);
}
return dbHelper;
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("create table user(id text primary key,realname text,password text,age integer,sex text,phonenum integer)");
db.execSQL("insert into user(id,realname,password,age,sex,phonenum)values('user','users','user',18,'female',123)");
db.execSQL("create table car(_id text ,carbrand text,carsign text,carmodel text,carnumber text primary key,enginenum text,bodylevel text,mileage integer,gasoline integer,engineperfor text,transperfor text,carlight text,foregin key _id references user(id))");
db.execSQL("insert into car(_id,carbrand,carsign,carmodel,carnumber,enginenum,bodylevel,mileage,gasoline,engineperfor,transperfor,carlight)values('user','auto','sigequan','hao','lyc310','chris826','sixseat',12,10,'異常','異常','壞')");
db.execSQL("create table fuel(username text,date text,gasstation text,filltype text,gaslitre integer)");
db.execSQL("insert into fuel(username,date,gasstation,filltype,gaslitre)values('user','20160601','zhongguoshihua','95',50)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
這是我項目里的代碼,很簡單,只是建了一個名為car的資料庫,還有user、car、fuel三個表,並插入數據。在SQLite中實現增刪改查也很簡單,這是另一個類里實現的方法。
//查詢用戶名和密碼
public boolean login(String id,String password){
SQLiteDatabase sdb= dbHelper.getReadableDatabase();
String sql="select * from user where id=? and password=?";
Cursor cursor = sdb.rawQuery(sql, new String[]{id,password});
if(cursor.moveToFirst()==true){
cursor.close();
return true;
}
return false;
}
//註冊用(增加操作)
public boolean register(User user,String _id){
SQLiteDatabase sdb = dbHelper.getReadableDatabase();
String str = "select id from user where id = ?";
Cursor cursor = sdb.rawQuery(str, new String[]{_id});
if(cursor.moveToFirst()!=true){
String sql ="insert into user(id,realname,password,age,sex,phonenum) values(?,?,?,?,?,?)";
Object obj[]={user.getId(),user.getRealname(),user.getPassword(),user.getAge(),user.getSex()};
sdb.execSQL(sql,obj);
return true;
}else{
return false;
}