tangyx
tangyx
  • 发布:2024-04-02 17:14
  • 更新:2025-07-15 09:56
  • 阅读:306

怎么实现SQLiteOpenHelper?

分类:uts

代码是这样:
import SQLiteOpenHelper from 'android.database.sqlite.SQLiteOpenHelper';
import SQLiteDatabase from 'android.database.sqlite.SQLiteDatabase';
import Context from 'android.content.Context';
export class XyDBHelper extends SQLiteOpenHelper {

private static TABLE_NAME : String = "xy_search_list"  
private static TABLE_VERSION : Number = 1  

private static COLUMN_ID = 'id'  
private static COLUMN_DESC = 'desc'  
private static COLUMN_URL = 'url'  
private static COLUMN_CREATE_TIME = 'create_time'  

constructor(context : Context) {  
    super(context, XyDBHelper.TABLE_NAME, null, XyDBHelper.TABLE_VERSION)  
}  

override onCreate(db : SQLiteDatabase) {  
}  

public override onUpgrade(param0 : SQLiteDatabase, param1 : number, param2 : number) {  
    // console.log('onUpgrade',param1,param2)  
    // param0.execSQL("DROP TABLE IF EXISTS "+XyDBHelper.TABLE_NAME)  
    // this.onCreate(param0)  
}  

}
但是编译出错,我在java是可以用的

'XyDBHelper' is not abstract and does not implement abstract base class member public abstract fun onUpgrade(p0: SQLiteDatabase!, p1: Int, p2: Int): Unit defined in android.database.sqlite.SQLiteOpenHelper‌

rror: None of the following functions can be called with the arguments supplied: ‌
17:14:13.098 ‌public constructor SQLiteOpenHelper(p0: Context?, p1: String?, p2: SQLiteDatabase.CursorFactory?, p3: Int) defined in android.database.sqlite.SQLiteOpenHelper‌
17:14:13.110 ‌public constructor SQLiteOpenHelper(p0: Context?, p1: String?, p2: Int, p3: SQLiteDatabase.OpenParams) defined in android.database.sqlite.SQLiteOpenHelper‌

‌error: 'onUpgrade' overrides nothing‌
真是炸裂

2024-04-02 17:14 负责人:无 分享
已邀请:
tangyx

tangyx (作者)

补充一下,export class XyDBHelper extends SQLiteOpenHelper

2***@qq.com

2***@qq.com

export class ProductDBHelper extends SQLiteOpenHelper {  
    private static readonly DATABASE_NAME : string = "goods_product.db"  
    private static readonly DATABASE_VERSION : Int = 4  
    private static readonly TABLE_NAME : string = "products"  
    private static readonly COLUMN_ID : string = "_id"  
    private static readonly COLUMN_NAME : string = "name"  
    private static readonly COLUMN_PRICE : string = "price"  
    private static readonly CREATE_TABLE : string = "CREATE TABLE " + this.TABLE_NAME + " (" +  
        this.COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +  
        this.COLUMN_NAME + " TEXT NOT NULL, " +  
        this.COLUMN_PRICE + " REAL NOT NULL, " +  
        ");"  

    constructor(p0 : Context | null) {  
        super(p0, ProductDBHelper.DATABASE_NAME, null, ProductDBHelper.DATABASE_VERSION);  
    }  
    override onCreate(db : SQLiteDatabase) {  
        db.execSQL(ProductDBHelper.CREATE_TABLE);  
    }  
    override onUpgrade(db : SQLiteDatabase, oldVersion : Int, newVersion : Int) {  
        db.execSQL("DROP TABLE IF EXISTS " + ProductDBHelper.TABLE_NAME);  
        onCreate(db);  
    }  

    // 获取字段  
    getColumnNames() : string {  

        let db = this.writableDatabase  
        let cursor = db.query("products", null, null, null, null, null, null)  

        // 获取所有列名  
        let columnNames = cursor.getColumnNames();  

        console.log(columnNames)  

        // 关闭 cursor  
        cursor.close();  
        return ""  
    }  
}

使用
let pp = new ProductDBHelper(UTSAndroid?.getAppContext())
pp.getColumnNames()

要回复问题请先登录注册