renameColumnField method
Implementation
Future<bool> renameColumnField(String tableName,String oldFieldName,String newFieldName) async{
bool result=false;
try{
String query="PRAGMA table_info("+tableName+");";
Map response=await fetchQueryRecords(query:query);
String createTableQuery="";
if(response.getString("status").equalsIgnoreCase("success")){
List<String> oldFieldsList=[];
List<String> newFieldsList=[];
List<Map<String,dynamic>> fieldsRecords=response["records"];
fieldsRecords.forEach((record) {
String fieldName=record["name"];
if(record["pk"]!=1){
oldFieldsList.add(fieldName);
}
if(fieldName.equalsIgnoreCase(oldFieldName)){
fieldName=newFieldName;
}
if(record["pk"]!=1){
newFieldsList.add(fieldName);
}
if(!createTableQuery.equalsIgnoreCase("")){
createTableQuery+=",";
}
createTableQuery+=fieldName+" "+record["type"];
if(record["pk"]==1){
createTableQuery+=" PRIMARY KEY AUTOINCREMENT";
}
if(record["notnull"]==1){
createTableQuery+=" NOT NULL";
}
if(record.containsKey("dflt_value")){
createTableQuery+=" DEFAULT "+record["dflt_value"];
}
});
String tempTableName="backup_"+tableName+"_temp";
query="ALTER TABLE "+tableName+" RENAME TO "+ tempTableName+";";
if(logQuery){
_debug(query);
}
executeQuery(query);
query="CREATE TABLE "+tableName+"("+ createTableQuery+");";
if(logQuery){
_debug(query);
}
executeQuery(query);
query="INSERT INTO "+tableName+"("+Simplify.joinStrings(",",newFieldsList)+") SELECT "+Simplify.joinStrings(",",oldFieldsList)+" FROM "+tempTableName+";";
if(logQuery){
_debug(query);
}
executeQuery(query);
query="DROP TABLE "+tempTableName+";";
if(logQuery){
_debug(query);
}
executeQuery(query);
}
}
catch (ex,stack){
Simplify.getExceptionMessage(ex,stack: stack);
}
return result;
}