» 首頁 » 討論區 » Android程式設計 »有關database問題

有關database問題

發表人: 訪客
發表時間: 2012-01-03 17:39:37
請問以下語法有沒有錯? 我在Cursor那行開始就死了!

[sea:javaCode]
public void getBasicInfo(Database helper){
String[] OpenColumns = new String[]{ID,NAME,PHONE};
SQLiteDatabase db = helper.getReadableDatabase();
Cursor c = db.query(TABLE_NAME, OpenColumns, null, null, null, null, ID);
if (c!=null){
int idIndex = c.getColumnIndex(ID);
int nameIndex = c.getColumnIndex(NAME);
int phoneIndex = c.getColumnIndex(PHONE);
contactName = new String[c.getCount()];
contactId = new int[c.getCount()];
contactPhone = new String[c.getCount()];
int i=0;
for (c.moveToFirst();!(c.isAfterLast()); c.moveToNext()){
contactName[i] = c.getString(nameIndex);
contactId[i] = c.getInt(idIndex);
contactPhone[i] = c.getString(phoneIndex);
i++;
}
}
c.close();
db.close();
}

[/sea]
發表人: 訪客
發表時間: 2012-01-03 21:42:55
Hi, 你有Create Database嗎?2
發表人: 訪客
發表時間: 2012-01-04 09:06:09
當然有

[sea:javaCode]
dbHelper = new Database(this, DB_NAME, null, 1);

[/sea]
發表人: Seachaos
積分: 2432
發表時間: 2012-01-05 15:32:15
我想應該是你沒有Create SQLite的Table

這裡有我常用的SQLite Class
可以參考看看

[sea:javaCode]
public class DB_Setting extends SQLiteOpenHelper{
private static final int DB_VERSION = 1;
public static final String
DB_NAME = "test";
public static final String
DB_CREATE_TABLE = "create table `" + DB_NAME + "` (" +
"`id` integer primary key autoincrement," +
"`name` text," +
"`value` text" +
")";

public DB_Setting(Context context) {
super(context, DB_NAME, null, DB_VERSION);

}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(DB_CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS `"+DB_NAME+"`");
onCreate(db);
}

public String getData(String name){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(DB_NAME, null, "`name`=?", new String[]{name}, null, null, "`id` desc");
if(cursor.moveToFirst())
return cursor.getString(cursor.getColumnIndexOrThrow("value"));
else
return null;
}
public void insertData(String name,String value){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("name", name);
cv.put("value", value);
db.insert(DB_NAME, null, cv );
}
public void updateData(String name,String value){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("value", value);
db.update(DB_NAME, cv, "`name`=?", new String[]{name});
}
}

[/sea]