我在向SQLite数据库发送查询时遇到了问题。在excel表格(或SQLite)中填充空单元格的最近填充单元格的值高于
问题是数据库(源自Excel工作表)有空单元格,其中应该有值,从上面的单元格给出的值在同一列中。
换句话说,如果值没有改变,excel工作表的制造者已将同一列中的单元格留空。我实际上需要这些单元格中的值!
由于sheet/db的大小,我无法手动执行此操作,有没有办法以编程方式执行此操作?
我真的更喜欢sql查询的方式,如果有的话!
最良好的祝愿, 托尔
我在向SQLite数据库发送查询时遇到了问题。在excel表格(或SQLite)中填充空单元格的最近填充单元格的值高于
问题是数据库(源自Excel工作表)有空单元格,其中应该有值,从上面的单元格给出的值在同一列中。
换句话说,如果值没有改变,excel工作表的制造者已将同一列中的单元格留空。我实际上需要这些单元格中的值!
由于sheet/db的大小,我无法手动执行此操作,有没有办法以编程方式执行此操作?
我真的更喜欢sql查询的方式,如果有的话!
最良好的祝愿, 托尔
您查询整个分贝,保持原来的排序顺序,然后每一行迭代。如果某些内容为空,则使用上面的值更新它。
编辑:你可能有类似这样的东西在这里做到这一点:
SQLiteDatabase db = SQLiteDatabase.openDatabase("myDb.db", null, SQLiteDatabase.OPEN_READWRITE);
Cursor c = db.query("table", null, null, null, null, null, "the column that defines the sort order");
if (c != null) {
int columnCount = c.getColumnCount();
String[] lastValues = new String[columnCount];
while (c.moveToNext()) {
ContentValues cv = new ContentValues();
for (int i = 0; i < columnCount; i++) {
String value = c.getString(i);
if (TextUtils.isEmpty(value)) {
// if that happens on first column you are screwed anyways.
cv.put(c.getColumnName(i), lastValues[i]);
} else {
lastValues[i] = value;
}
// we need to save some id here
}
if (cv.size() > 0) {
// use the id here
db.update("table", cv, "column=?", new String[] { "id" });
}
}
c.close();
}
但我会建议你使用Excel来修复数据库。这很容易,你不需要了解上面的代码。
我该如何执行该操作? – user1264884 2012-03-12 19:13:42
查看更新的答案 – zapl 2012-03-12 20:08:19
你可以在Excel中做到这一点。我回答了类似的问题在这里:
Blank Values in Excel File From CSV (not just rows)
您也可以在Excel中做到这一点完全:
选择列(或任何范围您正在使用),然后去到 编辑>转到(Ctrl + G)并单击特殊。检查空白&单击确定。此 将只选择列表中的空单元格。现在键入=键, 然后向上箭头和按Ctrl-输入。
这会在每个空白单元格中放入一个公式,使它等于 以上的单元格。然后,您可以复制^粘贴值,以摆脱 公式。
与@maneesha提出的方法类似的方法是过滤空白单元格,然后写入“等于上部单元格”公式,然后清除过滤器。
但我认为@maneeshas的解决方案更酷。
这是一个android问题吗?如果不适用,请考虑删除标签。 – Kekoa 2012-03-12 19:11:34
是的,没有。数据库适用于android应用程序,虽然它不是一个android特定的问题。标签已移除。 – user1264884 2012-03-12 19:17:45
如果忘记了数据入口,您如何知道上面的内容是正确的? – datatoo 2012-03-12 19:27:18