c# sqlite 修改字段类型

因为sqlite不支持直接修改字段类型, 所以只能创建新的表,再将原始数据复制过去。具体操作步骤如下:

第一步, 将表"tableName"的名称修改为 "oldTable"

复制代码
string queryString = string.Format("ALTER TABLE {0} RENAME TO {1}", "tableName", "oldTable");
SQLiteCommand cmd = new SQLiteCommand(queryString, dbConnection());
cmd.ExecuteNonQuery();

第二步:重新创新新的表"tableName", 这里就可以修改字段的类型

复制代码
queryString = @"CREATE TABLE IF NOT EXISTS " + "tableName"+ @"(
                        fTemplateid INTEGER,
                        fTemplatename VARCHAR)";
cmd.CommandText = queryString;
cmd.ExecuteNonQuery();

第三步: 恢复数据(将表"oldTable"中的数据恢复到 "tableName")

复制代码
queryString = string.Format("INSERT INTO {0} SELECT fTemplateid,fTemplatename FROM {1}", "tableName", "oldTable");
cmd.CommandText = queryString;
cmd.ExecuteNonQuery();

第四步: 删除表"oldTable"

复制代码
queryString = string.Format("DROP TABLE {0}", "oldTable");
cmd.CommandText = queryString;
cmd.ExecuteNonQuery();
相关推荐
2501_921939269 分钟前
MHA高可用
数据库·mysql
_Evan_Yao30 分钟前
MySQL 基础:SELECT、WHERE、JOIN 的第一次使用
数据库·mysql
weixin_444012931 小时前
c++如何将std--vector直接DUMP到二进制文件_指针地址直写【附代码】
jvm·数据库·python
woxihuan1234562 小时前
Go语言中--=运算符详解:位右移赋值操作的原理与应用
jvm·数据库·python
java1234_小锋2 小时前
SpringBoot为什么要禁止循环依赖?
java·数据库·spring boot
神仙别闹2 小时前
基于QT(C++)实现学生成绩管理系统
数据库·c++·qt
m0_690825822 小时前
如何备份被破坏的数据表_强制跳过错误的导出尝试
jvm·数据库·python
tongyiixiaohuang2 小时前
轻易云平台助力快麦数据入库MySQL
android·数据库·mysql
残 风2 小时前
快速理解什么是MVCC?
数据库·postgresql·oracle·数据库开发
m0_733565463 小时前
JavaScript中Reflect-ownKeys获取所有键名的优势
jvm·数据库·python