SQLite不支持直接修改字段类型,如需要修改字段类型,可按以下方法处理:
1、将要修改的字段名改名编程客栈2、用新的类型添加字段3、复制原字段的内容4、删除旧字段procedure SQLiteAlter(TableName,ColName,NewFileType:string); var sql:string; begin sql:='ALTER TABLE '+TableName+' RENAME COLUMN '+chr(39)+ColName+chr(39)+' TO '+chr(39)+ColName+'_old'+chr(39); UniSQL1.SQL.Text:=sql; UniSQL1.Execute; sql:='ALTER TABLE '+TableName+' ADD COLUMN '+ColName+' '+ NewFileType; UniSQL1.SQL.Text:=sql; UniSQL1.Execute; sql:='UPDATE '+TableName+' SET '+ColName+' = CAST('+ColName+'_old AS '+NewFileType+')'; UniSQL1.SQL.Text:=sql; UniSQL1.Execute; sql:='ALTER TABLE '+TablqZapfvrXXneName+' DROP COLUMN '+ColName+'_old'; UniSQL1.SQL.Text:=sql; UnijavascriptSQL1.Execute; end; //Demo: SQLiteAlter('blog_Content','TestFieldName','nvarchar(50)');
补充:sqlite sql 修qZapfvrXXn改字段类型
sqlite数据库中数据类型存在sqlite_master表中
select sql from sqlite_master where tb_name='tbname'
把这条sql语句改了,表结构就改了。
sqlite的alter table限制很多,所以一般直接把原表改名。复制一个表名与原表一样的,再把改名后的那个原表删了,以下sql语句可以用。新表改完字段类型如果不兼容原表,新表中的该字段数据读不出。所以要改类型可以不用声明字段类型alter table zb RENAME TO tempxxx_1; create table zb(rkdh char(15) ,gbdh char(15) ,http://www.devze.comcph nchar(9) ); INSERT INTO zb(rkdh,gbdh,cph,) select rkdh,gbdh,cph FROM tempxxx_1; drop table tempXXX_1
到此这篇关于SQLite修改字段类型的方法的文章就介绍到这了,更多相关SQLite修改字段类型的方法内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论