有關database問題
發表人:
訪客
請問以下語法有沒有錯? 我在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]
[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]
發表人:
訪客
Hi, 你有Create Database嗎?2
發表人:
訪客
當然有
[sea:javaCode]
dbHelper = new Database(this, DB_NAME, null, 1);
[/sea]
[sea:javaCode]
dbHelper = new Database(this, DB_NAME, null, 1);
[/sea]
發表人:
Seachaos
積分: 2432
積分: 2432
我想應該是你沒有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]
這裡有我常用的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]