android - 将新表添加到数据库后的插入问题
问题描述
更新:
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
if (oldVersion < 3) {
db?.execSQL(ARTIGO_TABLE_NAME);
}
if (oldVersion < 3) {
db?.execSQL(PAIS_TABLE_NAME);
db?.execSQL("INSERT INTO $PAIS_TABLE_NAME values('PT','Portugal')")
}
if (oldVersion < 3) {
db?.execSQL(POSTAL_TABLE_NAME);
}
}
我最近试图添加新表,但是在添加了这些新表之后,我的旧表中的插入不再起作用。
我已经清除了我的数据库并重新安装了应用程序,但是当我尝试将新数据(客户端)插入到我的旧表中时,它不起作用并且没有出现任何错误消息。
数据库代码(client
表是我的第一个表,其他是新表):
override fun onCreate(db: SQLiteDatabase?) {
val CREATE_CLIENTES_TABLE = ("CREATE TABLE IF NOT EXISTS $CLIENTES_TABLE_NAME (" +
"$DB_Cliente_Codigo INTEGER UNIQUE PRIMARY KEY," +
"$DB_Cliente_Nome VARCHAR(40)," +
"$DB_Cliente_Morada VARCHAR(40)," +
"$DB_Cliente_Localidade VARCHAR(30)," +
"$DB_Cliente_Postal VARCHAR(8)," +
"$DB_Cliente_Contribuinte VARCHAR(15)," +
"$DB_Cliente_Telefone VARCHAR(15)," +
"$DB_Cliente_Pais VARCHAR(3))")
val CREATE_ARTIGO_TABLE = ("CREATE TABLE IF NOT EXISTS $ARTIGO_TABLE_NAME (" +
"$DB_ARTIGO_CODIGO INTEGER UNIQUE PRIMARY KEY," +
"$DB_ARTIGO_ABREVIADO VARCHAR (20), " +
"$DB_ARTIGO_EXTENSO VARCHAR (45), " +
"$DB_ARTIGO_FAMILIA INTEGER (3)," +
"$DB_ARTIGO_IVA INTEGER (2)," +
"$DB_ARTIGO_PRECO INTEGER," +
"$DB_ARTIGO_PRECO_2 INTEGER," +
"$DB_ARTIGO_PRECO_3 INTEGER )")
val CREATE_PAIS_TABLE = ("CREATE TABLE IF NOT EXISTS $PAIS_TABLE_NAME (" +
"$DB_ABR_PAIS VARCHAR (3)," +
"$DB_DESC_PAIS VARCHAR)")
val CREATE_POSTAL_TABLE = ("CREATE TABLE IF NOT EXISTS $POSTAL_TABLE_NAME (" +
"$DB_CODIGO_POSTAL VARCHAR (8)," +
"$DB_DESCRICAO_POSTAL VARCHAR (30))")
db?.execSQL(CREATE_CLIENTES_TABLE)
db?.execSQL(CREATE_POSTAL_TABLE)
db?.execSQL(CREATE_PAIS_TABLE)
db?.execSQL(CREATE_ARTIGO_TABLE)
db?.execSQL("INSERT INTO $PAIS_TABLE_NAME values('PT','Portugal')")
我没有将我的方法更改为 addclient,它是相同的并且运行良好
fun addClient(mCtx: Context, clientes: clientes) {
val values = ContentValues()
values.put(DB_Cliente_Codigo, clientes.codigo_cliente)
values.put(DB_Cliente_Nome, clientes.nome_cliente)
values.put(DB_Cliente_Morada, clientes.morada_cliente)
values.put(DB_Cliente_Localidade, clientes.localidade_cliente)
values.put(DB_Cliente_Postal, clientes.postal_cliente)
values.put(DB_Cliente_Contribuinte, clientes.contribuinte_cliente)
values.put(DB_Cliente_Telefone, clientes.telefone_cliente)
values.put(DB_Cliente_Pais, clientes.pais_cliente)
val db = this.writableDatabase
try {
db.insert(CLIENTES_TABLE_NAME, null, values)
Toast.makeText(mCtx, "Cliente Adicionado", Toast.LENGTH_SHORT).show()
} catch (e: Exception) {
Toast.makeText(mCtx, e.message, Toast.LENGTH_SHORT).show()
}
db.close()
}
解决方案
有时,当您更改数据库架构并且不更新版本时会发生这种情况。假设您首先创建了数据库并通过了版本 1。如果您下次更改数据库,则必须将版本从 1 更新到 2。试试这个,让我知道它是否有效。
推荐阅读
- reactjs - 在 React 应用程序中加载动态生成的图像
- python - Couchbase 查询不返回不允许参数
- google-apps-script - Google 应用程序脚本的数据分析库
- r - 为什么我在 R 中使用“放置”包时得到“OVER_QUERY_LIMIT”
- macos - 使用 Mac Unix Sed 删除 X 到 Y 行
- laravel - 如何在模型中的任何列上执行 where()
- reactjs - 如何在 React Fabric-UI 的 CommandBar 中显示 Persona 组件?
- file - Codeigniter 使用输入数组键上传多个文件
- python - 从类中的无类模块导入函数
- spring-boot - Spring:如何从 uri 中获取价值?