資料庫增加新列

2021-08-21 05:40:33 字數 2734 閱讀 2880

2023年02月14日 11:24:11

public

class

copyofdatabasehelper

extends

sqliteopenhelper

return db_helper;

}public

copyofdatabasehelper

(context context)

/*** 資料庫建立時執行

*/@override

public

void

oncreate

(sqlitedatabase db)

/*** 資料庫版本發生變化

*/@override

public

void

onupgrade

(sqlitedatabase db, int oldversion, int newversion)

}第一次資料庫公升級,版本號為2,新增乙個age欄位:

public

class

copyofdatabasehelper

extends

sqliteopenhelper

return db_helper;

}public

copyofdatabasehelper

(context context)

/*** 資料庫建立時執行

*/@override

public

void

oncreate

(sqlitedatabase db)

/*** 資料庫版本發生變化

*/@override

public

void

onupgrade

(sqlitedatabase db, int oldversion, int newversion)

}第二次公升級資料庫,版本號為3,新增乙個成績字段:

public

class

copyofdatabasehelper

extends

sqliteopenhelper

return db_helper;

}public

copyofdatabasehelper

(context context)

/*** 資料庫建立時執行

*/@override

public

void

oncreate

(sqlitedatabase db)

/*** 資料庫版本發生變化

*/@override

public

void

onupgrade

(sqlitedatabase db, int oldversion, int newversion)

//當前版本為2時就只公升級下面的字段

string sql1 =

"alter table "+datacolumn.student.table_name+

" add column "+datacolumn.student.column_name_score+

" text ";

db.execsql(sql1);}}

公升級資料庫時我們就要考慮全面,若不加上判斷語句判斷版本號,若之前2版本使用者沒有公升級就直接公升級到3,就會漏掉字段,故公升級時所有的情況都應該考慮進去。

android應用程式更新的時候如果資料庫修改了字段需要更新資料庫,並且保留原來的資料庫資料:

這是原有的資料庫表

create_book = "create table book(bookid integer primarykey,bookname text);";

然後我們增加乙個字段:

create_book = "create table book(bookid integer primarykey,bookname text,bookcontent text);";

首先我們需要把原來的資料庫表重新命名一下

create_temp_book = "alter table book rename to _temp_book";

然後把備份表中的資料copy到新建立的資料庫表中

insert_data = "insert into book select *,' ' from _temp_book";(注意' '是為新加的字段插入預設值的必須加上,否則就會出錯)。

然後我們把備份表乾掉就行啦。

drop_book = "drop table _temp_book";

然後把資料庫的版本後修改一下,再次建立資料庫操作物件的時候就會自動更新(注:更新的時候第乙個建立的運算元據的物件必須是可寫的,也就是通過這個方法getwritabledatabase()獲取的資料庫操作物件)

然後在onupgrade()方法中執行上述sql語句就ok了

public class dbservice extends sqliteopenhelper

@override

public void oncreate(sqlitedatabase db)

@override

public void onupgrade(sqlitedatabase db, int oldversion, int newversion) }

資料庫 insert 增加列

一些出現的問題 1.insert 增加列 增加乙個列 alter table 表名 add 列名 資料型別 如 alter table emp add weight number 38,0 修改乙個列的資料型別 一般限於修改長度,修改為乙個不同型別時有諸多限制 alter table 表名 modi...

資料庫的增 刪 改 查 增加列 刪除列

varchar n n為數字,表示n位數的字元。增 create datebase xuesheng 建立乙個xuesheng的資料庫,注意要有go go create table xueshengxinxi code int,編號為int name varchar 20 名字為varchar sc...

SQLite資料庫建立臨時表 增加列的方法

這兩天幫朋友做乙個關於地熱資料處理的小軟體再次用到了sqlite資料庫,不過這次不是使用其快取 記憶體資料庫的功能,而是純粹將其作為乙個嵌入式檔案資料庫來使用的,其實對於資料量級相對比較小的系統而言,嵌入式資料庫sqlite絕對是乙個非常理想的選擇。但是,話又說回來,畢竟是乙個沒有dba的資料庫系統...