Android,使用String.format()处理插入null

时间:2016-07-12 05:44:03

标签: android sqlite

如何使用String.format()这样在SQLite中插入null?

String sql = "INSERT INTO tblCustomers (idCustomer , customerName  )" +
            " VALUES (%d , '%s')";
db.execSQL(String.format(Locale.US,
                sql,
                1, "Ali"));
db.execSQL(String.format(Locale.US,
                sql,
                1, null));// this time it inserts 'null' value as string in database, not (NULL)

2 个答案:

答案 0 :(得分:2)

由于null

String.format()正在转换为“null”。因此,您只需要为新行和左idCustomer字段插入customerName字段。

为此,您只需要插入id字段。

String id_sql = "INSERT INTO tblCustomers (idCustomer)" +
            " VALUES (%d)";

db.execSQL(String.format(Locale.US,
                id_sql,
                1));

您需要使用ContentValues,而不是使用当前的方式。它也会根据需要处理您的null值。所以你的查询将是

  ContentValues values = new ContentValues();
  values.put(COLUMN_ID, valueOfID);
  values.put(COLUMN_NAME, valueOfName);
  values.put(COLUMN_OTHER, valueOfOther);
  // Insert query will be
  long insertId = database.insert(TABLE_NAME, null,
      values);

答案 1 :(得分:0)

最后,我使用了一种像魅力一样的简单方法!

String sql = "INSERT INTO tblCustomers (idCustomer , customerName  )" +
        " VALUES (%d , %s)";
db.execSQL(Locale.US,
                sql , 
                item.getID(), item.getNameForQuery());

我的CustomerObject.java:

    public String getCustomerNameForQuery() {
         return customerName == null ? null : "'"+name+"'";
    }

如您所见,我将查询字符串中的单引号移动到我的对象。