是否可以在SQLite表中设置列宽?

时间:2012-08-28 00:54:18

标签: android database string sqlite

我正在尝试在视图中显示SQLite表。我希望我的第一列宽度为20个字符。我试图通过使用substring方法来实现这种效果,但我得到stringindexoutofboundsexceptions,字符串少于20个字符。任何帮助是极大的赞赏。这是我的代码:

在视图中显示表格的方法:

public String getData() {
    // TODO Auto-generated method stub
    String[] columns = new String[]{ KEY_ROWID, KEY_NAME, KEY_QUANTITY, KEY_VALUE };
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
    String result = "";

    int iRow = c.getColumnIndex(KEY_ROWID);
    int iName = c.getColumnIndex(KEY_NAME);
    int iQuantity = c.getColumnIndex(KEY_QUANTITY);
    int iValue = c.getColumnIndex(KEY_VALUE);

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
        result = result + /*c.getString(iRow) + " " +*/ c.getString(iName).substring(0, 20) + " " + c.getString(iQuantity) + " " + c.getString(iValue) + "\n";
    }

2 个答案:

答案 0 :(得分:1)

只需使用c.getString(iName).substring(0, Math.min(20, c.getString(iName).length())(可能使用临时用于c.getString(iName))而不是现在的子字符串。

答案 1 :(得分:0)

如果您不想要它们,那么为什么选择。你可以做到

String[] columns = new String[]{ KEY_ROWID, "substr(" + KEY_NAME + ",1,20)", KEY_QUANTITY, KEY_VALUE };
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);

从列中获取最多20个字符。