if(database does not have specific column){ db.execsql("alter table table" + " ADD columN column" ); }
我看到了其他一些答案,Pragma Table,但我不知道如何使用它甚至它真正的用途.
您应始终拥有新的表创建@L_772_11@,并将其用于升级和传输任何现有数据.注意:onUpgrade方法为您的sqlite帮助程序对象运行一个,您需要处理其中的所有表.
那么推荐使用什么升级:
> begintransaction
>运行表创建,如果不存在(我们正在进行升级,因此表可能尚不存在,它将失败更改和删除)
>在列表中放入现有列List< String> columns = DBUtils.Getcolumns(db,TableName);
>备份表(ALTER表“Tablename”Rename TO’temp_“TableName)
>创建新表(最新的表创建模式)
>获取与新列的交集,这次是从升级后的表中获取的列(columns.retainAll(DBUtils.Getcolumns(db,TableName));)
>恢复数据(String cols = StringUtils.join(columns,“,”);
db.execsql(的String.format(
“从temp_%s插入%s(%s)SELECT%s”,
tableName,cols,TableName));
)
>删除备份表(DROP表’temp_“TableName)
> settransactionsuccessful
(这不会处理表降级,如果重命名列,则不会因列名不匹配而传输现有数据).
.
public static List<String> Getcolumns(sqliteDatabase db,String tableName) { List<String> ar = null; cursor c = null; try { c = db.rawQuery("SELEct * from " + tablename + " limit 1",null); if (c != null) { ar = new ArrayList<String>(Arrays.asList(c.getcolumnNames())); } } catch (Exception E) { Log.v(tablename,e.getmessage(),E); e.printStackTrace(); } finally { if (c != null) c.close(); } return ar; } public static String join(List<String> list,String delim) { StringBuilder buf = new StringBuilder(); int num = list.size(); for (int i = 0; i < num; i++) { if (i != 0) buf.append(delim); buf.append((String) list.get(i)); } return buf.toString(); }
以上是大佬教程为你收集整理的检查Android SQLite数据库中的特定列全部内容,希望文章能够帮你解决检查Android SQLite数据库中的特定列所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。