大家好,这是我的小弗兰肯斯坦代码,不要取笑它,它的工作原理!
因此,您将传递表名称和作为关联数组的数据作为对象.
我很确定这不是像我一样好的代码而且还在学习ActionScript.那么我可以改变什么,或者你们如何让它变得更好?
因此,您将传递表名称和作为关联数组的数据作为对象.
我很确定这不是像我一样好的代码而且还在学习ActionScript.那么我可以改变什么,或者你们如何让它变得更好?
public function save(table:String,data:Object):void { var conn:sqlConnection = new sqlConnection(); var folder:File = File.applicationStorageDirectory; var dbFile:File = folder.resolvePath("task.db"); conn.open(dbFile); var stat:sqlStatement=new sqlStatement(); stat.sqlConnection=conn; //make fields and values var fields:String=""; var values:String=""; for(var sRole:String in data) { fields=fields+sRole+",:"; stat.parameters[":"+sRole]=data[sRole]; } //trim off white space var s:String=new String(fields); var cleanString:String=s.slice( 0,-2 ); //over here we add : infront of the values I forget why var find:RegExp=/:/g; var mymyField:String=new String(cleanString.replace(find,"")); cleanString=":"+cleanString; var sqlFields:String=mymyField; var sqlValues:String=cleanString; stat.text="INSERT INTO "+table+" ("+sqlFields+")VALUES("+sqlValues+")"; stat.execute(); }
解决方法
诚实地说,构建查询的部分非常恐怖.一半的代码删除了之前添加了几行的垃圾.这使得阅读和理解变得困难.这是代码质量差的一个标志.以下内容更短更简单:
//make fields and values var fields:Array = []; for(var field:String in data) { fields.push(field); stat.parameters[":"+field]=data[fieldName]; } var sqlFields:String = fields.join(","); var sqlValues:String = ":"+fields.join(",:"); stat.text="INSERT INTO "+table+" ("+sqlFields+")VALUES("+sqlValues+")"; stat.execute();